Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Schalte die Lampe ein, solange sich etwas in der Laderampe befindet.

  1. Füge ein Feld int inBay; hinzu. Setze in Start() lamp.enabled = false;.
  2. Addiere in OnTriggerEnter 1 zu inBay und setze lamp.enabled = true;.
  3. Ziehe in OnTriggerExit 1 von inBay ab 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

Übe selbstständig: Unity-Playground