Menu
CoddyTech

Entrée et sortie

Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 19 sur 63.

Un déclencheur envoie deux messages supplémentaires. OnTriggerExit(Collider other) s’exécute une fois, lors de l’étape physique où le chevauchement prend fin, quelle qu’en soit la raison. OnTriggerStay(Collider other) s’exécute à chaque étape physique tant que le chevauchement dure, 50 fois par seconde par défaut, comme FixedUpdate(). Les trois reçoivent le même Collider.

Ce courant ascendant soulève tout ce qui flotte à l’intérieur et signale quand l’objet en sort :

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");
}

Une force s’applique lors d’une étape physique, donc OnTriggerStay convient : la poussée est appliquée une fois par étape tant que la balle se trouve à l’intérieur, puis cesse dès qu’elle en sort. Le courant ascendant n’a pas de Rigidbody, donc chaque visiteur doit en avoir un, et attachedRigidbody n’est jamais null dans ce cas. Pour obtenir une quantité par seconde dans OnTriggerStay, multiplie par Time.deltaTime, qui correspond à la durée de l’étape, soit 0.02, lors d’une étape physique. Chaque visite déclenche un OnTriggerEnter puis, plus tard, un OnTriggerExit pour le même collider.

challenge icon

Défi

Facile

La baie jaune peinte sur le sol de l'entrepôt est un déclencheur, et lamp est le voyant d'avertissement sur le poteau à côté. Écris LoadingBay pour que le voyant indique si quelque chose se trouve dans la baie :

  • Au démarrage du jeu, la baie est vide, donc le voyant est éteint (lamp.enabled = false).
  • Tant qu'au moins un objet se trouve dans la baie, le voyant est allumé.
  • Lorsque le dernier objet quitte la baie, le voyant s'éteint à nouveau.

Deux caisses et le joueur peuvent se trouver dans la baie en même temps, donc le départ de l'un ne signifie pas que la baie est vide. Appuie sur Play et pousse les caisses pour les faire entrer et sortir à l'aide des flèches, puis clique sur Check.

Essayez vous-même

using UnityEngine;

public class LoadingBay : MonoBehaviour
{
    public Light lamp;

    // La lampe est allumée tant qu'il y a quelque chose dans la zone de chargement, et éteinte lorsqu'elle est vide
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Physique et gameplay