Menu
CoddyTech

Betreten und Verlassen

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

Ein Trigger sendet zwei weitere Nachrichten. OnTriggerExit(Collider other) wird einmal ausgeführt, in dem Physikschritt, in dem die Überlappung endet, egal wie sie endet. OnTriggerStay(Collider other) wird bei jedem Physikschritt ausgeführt, solange die Überlappung besteht, standardmäßig 50-mal pro Sekunde, wie FixedUpdate(). Alle drei erhalten dasselbe 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 so lange, wie sich der Ball darin befindet, einmal pro Schritt angewendet und endet in dem Moment, in dem er den Bereich 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 dessen Länge angibt: 0.02. Jeder Eintritt löst ein OnTriggerEnter und später ein OnTriggerExit für denselben Collider aus.

challenge icon

Aufgabe

Einfach

Die gelbe Bay, die auf den Lagerhallenboden gemalt ist, ist ein Trigger, und lamp ist die Warnleuchte an dem Pfosten daneben. Schreibe LoadingBay, sodass die Lampe anzeigt, ob sich etwas in der Bay befindet:

  • Wenn das Spiel startet, ist die Bay leer, also ist die Lampe aus (lamp.enabled = false).
  • Solange sich mindestens ein Objekt in der Bay befindet, ist die Lampe an.
  • Wenn das letzte Objekt die Bay verlässt, geht die Lampe wieder aus.

Zwei Kisten und der Spieler können sich gleichzeitig in der Bay befinden, daher bedeutet es nicht, dass die Bay leer ist, wenn eine davon sie verlässt. Drücke Play und schiebe die Kisten mit den Pfeiltasten hinein und hinaus, dann Check.

Probier es selbst

using UnityEngine;

public class LoadingBay : MonoBehaviour
{
    public Light lamp;

    // Die Lampe leuchtet, solange sich etwas in der Ladebucht befindet, und ist aus, wenn die Ladebucht leer ist
}
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