Menu
CoddyTech

OnCollisionEnter

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 8 von 71.

Wenn sich zwei Collider berühren, ruft Unity auf den Skripten beider Objekte OnCollisionEnter(Collision collision) auf. Der Aufruf erfolgt einmal in dem Physikschritt, in dem die Berührung beginnt, und nicht erneut, solange die Objekte in Kontakt bleiben. Damit es überhaupt zu einer Kollision kommt, muss mindestens eines der beiden Objekte über ein Rigidbody verfügen, das von der Physik bewegt wird: Eine Wand und ein Boden ohne Rigidbody melden einander niemals etwas.

Diese Kiste protokolliert, wenn sie landet. Sie hat ein Rigidbody, fällt also herunter, und die Meldung kommt in dem Schritt an, in dem sie auf den Boden trifft:

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Thud!");
}

Die Kiste protokolliert dies einmal und erst wieder, nachdem sie den Boden verlassen hat und ein zweites Mal landet. Auch der Boden erhält die Meldung: Ein Skript auf ihm würde hören, wie die Kiste landet, obwohl der Boden kein Rigidbody hat. Der Name und der Parameter müssen exakt stimmen. Eine Methode namens onCollisionEnter wird niemals aufgerufen, und es wird kein Fehler ausgegeben. Bei einer Methode mit einem Collider protokolliert Unity Script error: OnCollisionEnter mit This message parameter has to be of type: Collision und ignoriert sie. Solange die beiden Objekte in Kontakt bleiben, ruft Unity in jedem Physikschritt OnCollisionStay auf. Wenn sie sich trennen, wird OnCollisionExit einmal aufgerufen.

challenge icon

Aufgabe

Einfach

Die Druckplatte zählt, was auf ihr landet.

  1. Füge private int presses; zu PressurePlate hinzu.
  2. Füge void OnCollisionEnter(Collision collision) hinzu: Erhöhe presses um 1 und gib "Pressed " + presses im Protokoll aus.

Drücke „Spielen“: Die Kiste landet, und in der Konsole wird einmal Pressed 1 angezeigt. Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;

public class PressurePlate : MonoBehaviour
{
    // Zähle jede Landung und protokolliere sie: Pressed 1, Pressed 2, ...
}

Alle Lektionen in Physik und Gameplay

Übe selbstständig: Unity-Playground