Menu
CoddyTech

Entrée et sortie

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

Un déclencheur envoie deux messages supplémentaires. OnTriggerExit(Collider other) s’exécute une fois, à l’étape de physique où le chevauchement prend fin, quelle qu’en soit la raison. OnTriggerStay(Collider other) s’exécute à chaque étape de 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 cela 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 doit être appliquée à une étape de physique, donc OnTriggerStay convient : la poussée est appliquée une fois par étape tant que la balle est à l’intérieur, et 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 ici. Pour appliquer une quantité par seconde dans OnTriggerStay, multipliez par Time.deltaTime, qui correspond à la durée de l’étape, soit 0.02, pendant une étape de physique. Chaque visite déclenche un OnTriggerEnter puis, plus tard, un OnTriggerExit pour le même collider.

challenge icon

Défi

Facile

Allume la lampe tant qu’il y a quelque chose dans la zone de chargement.

  1. Ajoute un champ int inBay;. Dans Start(), définis lamp.enabled = false;.
  2. Dans OnTriggerEnter, ajoute 1 à inBay et définis lamp.enabled = true;.
  3. Dans OnTriggerExit, soustrais 1 de inBay et éteins la lampe uniquement lorsque sa valeur est 0.

Appuie sur « Jouer » et pousse les caisses pour les faire entrer et sortir : la lampe reste allumée jusqu’à ce que la zone soit vide. Puis appuie sur « Vérifier ».

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 baie, et éteinte quand la baie est vide
}

Toutes les leçons de Physique et gameplay

Entraînez-vous par vous-même : Playground Unity