Betreten und Verlassen
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 20 von 71.
Ein Trigger sendet zwei weitere Nachrichten. OnTriggerExit(Collider other) wird einmal ausgeführt, beim Physikschritt, in dem die Überlappung endet, unabhängig davon, wie sie endet. OnTriggerStay(Collider other) wird bei jedem Physikschritt ausgeführt, solange die Überlappung andauert, standardmäßig 50-mal pro Sekunde, wie FixedUpdate(). Alle drei erhalten denselben Collider.
Dieser Aufwind hebt alles an, was darin schwebt, und meldet, wenn es ihn verlässt:
public float lift = 15f;
void OnTriggerStay(Collider other)
{
other.attachedRigidbody.AddForce(Vector3.up * lift);
}
void OnTriggerExit(Collider other)
{
Debug.Log(other.name + " left the updraft");
}Eine Kraft gehört in einen Physikschritt, daher eignet sich OnTriggerStay dafür: Der Schub wird in jedem Schritt angewendet, solange sich der Ball darin befindet, und endet in dem Moment, in dem er ihn verlässt. Der Aufwind hat kein Rigidbody, daher muss jeder Besucher eines haben, und attachedRigidbody ist hier niemals null. Für eine Menge pro Sekunde innerhalb von OnTriggerStay multiplizierst du mit Time.deltaTime, das während eines Physikschritts der Länge des Schritts entspricht: 0.02. Jeder Eintritt löst ein OnTriggerEnter und später ein OnTriggerExit für denselben Collider aus.
Aufgabe
EinfachSchalte die Lampe ein, solange sich etwas in der Laderampe befindet.
- Füge ein Feld
int inBay;hinzu. Setze inStart()lamp.enabled = false;. - Addiere in
OnTriggerEnter1 zuinBayund setzelamp.enabled = true;. - Ziehe in
OnTriggerExit1 voninBayab und schalte die Lampe nur dann aus, wenn der Wert 0 ist.
Drücke auf „Spielen“ und schiebe die Kisten hinein und wieder hinaus: Die Lampe bleibt an, bis die Laderampe leer ist. Drücke dann auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class LoadingBay : MonoBehaviour
{
public Light lamp;
// Die Lampe ist an, solange sich etwas in der Ladebucht befindet, und aus, wenn die Ladebucht leer ist
}
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