GEC1
Begriff · raum

Kollision

Zwei Collider berühren sich. Ein normaler Collider ist fest, Dinge prallen ab. Ein Trigger ist durchlässig und meldet nur, dass etwas hineinkommt oder hinausgeht.

Kurz

Für die Physik besteht ein Objekt aus seinem Collider: einer einfachen, unsichtbaren Form wie Box, Kugel oder Kapsel. Wie das Objekt aussieht, spielt für Kollisionen keine Rolle.

Ein Collider kann zweierlei sein:

normaler ColliderTrigger (Is Trigger an)
fühlt sich an wieWand, Boden, Kisteunsichtbare Lichtschranke
andere Objekteprallen abgehen hindurch
meldetOnCollisionEnter (Aufprall)OnTriggerEnter (betreten), OnTriggerExit (verlassen)

Beide Meldungen sind Events: Unity ruft die Methode genau in dem Moment auf, in dem es passiert.

Genauer

Unity meldet nicht jede Berührung. Mindestens eines der beiden Objekte braucht einen Rigidbody:

  • Aufprall-Meldungen gibt es nur, wenn mindestens ein Objekt einen Rigidbody hat, bei dem Is Kinematic aus ist. Zwei Wände ohne Rigidbody melden sich nie, auch wenn sie sich überlappen.
  • Trigger-Meldungen gibt es, wenn mindestens eines der Objekte einen Rigidbody hat, auch einen kinematischen. Meist ist der Trigger fest und das Objekt, das hindurchgeht, hat den Rigidbody.

Die Spielfigur des Kits hat keinen Rigidbody, sondern einen CharacterController. Der löst Trigger trotzdem aus.

void OnTriggerEnter(Collider other)   // auf dem Objekt mit dem Trigger
{
    if (other.CompareTag("Player"))
        Debug.Log("Spielfigur ist in der Zone");
}

In Unity sehen

  • Ein Collider ist eine Component. Ausgewählt zeigt die Scene-Ansicht seine Form als grünen Drahtrahmen.
  • Trigger anlegen: ein leeres GameObject, einen Box Collider dazu, Is Trigger anhaken. Meist bleibt ein Trigger unsichtbar.
  • Kommt keine Meldung an, die Regeln oben prüfen: Rigidbody vorhanden? Is Trigger auf der richtigen Seite? Stimmt der Tag?
  • Im Kit melden die Knoten Zone (Trigger) und Zusammenstoß (Aufprall). Die Zone warnt, wenn ihr Collider kein Trigger ist.

Weiterlesen