OnTriggerEnter
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 16 von 71.
void OnTriggerEnter(Collider other) wird einmal ausgeführt, beim Physikschritt, in dem ein anderer Collider beginnt, einen Trigger zu überlappen. other ist dieser Collider. Daher verraten dir other.name, other.gameObject und other.CompareTag("Player"), was eingetreten ist. Unity ruft die Methode in den Skripten beider Objekte auf: Beim Trigger ist other das eintretende Objekt, und beim eintretenden Objekt ist other der Trigger.
Diese Ziellinie reagiert nur auf den Spieler, auf nichts anderes. Ein Ball, der darüberrollt, protokolliert daher nichts:
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log(other.name + " crossed the finish line");
}
}Der Parameter muss ein Collider sein. Wird die Methode als void OnTriggerEnter(Collision collision) geschrieben, wird das Skript trotzdem kompiliert, da es für C# eine gewöhnliche Methode ist. Unity überprüft den Parameter selbst, protokolliert einen Script error: OnTriggerEnter mit dem Hinweis This message parameter has to be of type: Collider und ruft die Methode nie auf. Collision gehört zu OnCollisionEnter, wo zwei feste Körper sich an einem Kontaktpunkt treffen. Ein Trigger hat keinen Kontakt zu melden, sondern nur den Collider, daher erhält er einen Collider.
Aufgabe
EinfachKorrigiere die Methode des Mauttors und kassiere anschließend die Maut von den Autos.
- Klicke auf „Spielen“: Die Console zeigt einen Fehler zur Methode an. Ändere sie in
void OnTriggerEnter(Collider other). - Füge innerhalb der Methode, wenn
other.CompareTag("Car")gilt,tollzucollectedhinzu und protokolliere"Toll: " + collected. Der Radfahrer fährt kostenlos durch.
Klicke auf „Spielen“: Die Console zeigt Toll: 3 und dann Toll: 6 an. Klicke anschließend auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class TollGate : MonoBehaviour
{
public int toll = 3;
int collected;
void OnTriggerEnter(Collision collision)
{
// Autos zahlen Maut; alles andere darf kostenlos passieren
}
}
Alle Lektionen in Physik und Gameplay
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe4Coroutinen
AufrufenWiederholt aufrufen, Aufruf abbrechenDeine erste CoroutineSchleifen in CoroutinenCoroutinen beendenRückblick: Countdown10Projekt: Arena-Flucht
Die ArenaJäger2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand5Projekt: Münzrausch
Der rollende BallMünzen zum Einsammeln11Abschließende Herausforderungen
KanonenreichweiteBewegliche ZieleMurmelgolfIns LochEscape RoomDie TürÜbe selbstständig: Unity-Playground