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.
Aufgabe
EinfachDie 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.csein Rigidbody hinzu, wenn das Spiel startet, und speichere es inbody. Die Drohne muss auf ihrer Route waagerecht fliegen. Ein Rigidbody an der Drohne reicht für alle drei Ringe. - Stelle in
Ring.csden 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");
}
}
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
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand