Menu
CoddyTech

Trigger-Collider

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 15 von 63.

Ein Collider, bei dem Is Trigger aktiviert ist, ist nicht mehr fest: Rigidbodies gehen direkt hindurch, und Unity meldet stattdessen die Überlappung, indem es OnTriggerEnter für die Skripte beider Objekte aufruft. Ziellinien, sammelbare Objekte und Gefahrenzonen sind Trigger. Im Code ist das Kontrollkästchen die Eigenschaft isTrigger des Colliders.

Die Alarmzone dieses Tresors schaltet ihren Collider beim Start des Spiels auf einen Trigger um – das entspricht dem Aktivieren des Kontrollkästchens – und löst den Alarm aus, wenn ein Wachmann hineingeht:

void Start()
{
    GetComponent<Collider>().isTrigger = true;
}

void OnTriggerEnter(Collider other)
{
    Debug.Log("Alarm!");
}

Für Trigger gilt dieselbe Regel wie für Kollisionen: Unity prüft ein Paar nur, wenn mindestens eines der beiden Objekte einen Rigidbody hat. Zwei Objekte ohne Rigidbody melden einander niemals, unabhängig davon, ob es sich um Trigger handelt oder nicht. Die Wachen patrouillieren mithilfe eines Skripts, daher hat jede Wache einen kinematischen Rigidbody (Add Component, Rigidbody, Is Kinematic aktiviert): Die Schwerkraft und Stöße wirken sich nicht auf ihn aus, und er zählt weiterhin als Rigidbody. Ohne die Rigidbodies der Wachen läuft eine Wache durch die Zone, und die Konsole bleibt leer. Ohne isTrigger ist die Zone eine feste Box, und ein kinematischer Körper berührt niemals einen Collider ohne Rigidbody – daher wird wieder nichts protokolliert. Ein Rigidbody im Paar genügt, unabhängig davon, an welchem Objekt er sich befindet. In der nächsten Lektion geht es um other, den Collider, der hineingekommen ist.

challenge icon

Aufgabe

Einfach

Die Drone soll eine Route durch drei Ringe fliegen, und jeder Ring soll seinen Namen und passed protokollieren, wenn die Drohne hindurchfliegt, zum Beispiel Ring1 passed. Bisher funktioniert nichts: Das Skript der Drohne lässt sie mit MovePosition fliegen, aber nichts in der Szene hat ein Rigidbody, und die Ringe sind solide.

  • Füge der Drohne in Drone.cs ein Rigidbody hinzu, wenn das Spiel startet, und speichere es in body. Die Drohne muss auf ihrer Route waagerecht fliegen. Ein Rigidbody an der Drohne reicht für alle drei Ringe.
  • Stelle in Ring.cs den Collider jedes Rings beim Start des Spiels als Trigger ein.

Drücke Play und beobachte die Konsole, dann Check.

Probier es selbst

using UnityEngine;

public class Ring : MonoBehaviour
{
    void Start()
    {
        // Mache den Collider dieses Rings zu einem Trigger
    }

    void OnTriggerEnter(Collider other)
    {
        Debug.Log(name + " passed");
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Physik und Gameplay