Menu
CoddyTech

OnTriggerEnter

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

void OnTriggerEnter(Collider other) s’exécute une fois, lors de l’étape de physique où un autre collider commence à chevaucher un trigger. other est ce collider : other.name, other.gameObject et other.CompareTag("Player") t’indiquent donc ce qui est entré. Unity appelle cette méthode dans les scripts des deux objets : sur le trigger, other est le visiteur, et sur le visiteur, other est le trigger.

Cette ligne d’arrivée réagit au joueur et à rien d’autre, donc une balle qui la franchit ne génère aucun journal :

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        Debug.Log(other.name + " crossed the finish line");
    }
}

Le paramètre doit être un Collider. Écrite sous la forme void OnTriggerEnter(Collision collision), la méthode compile quand même, car pour C#, il s’agit d’une méthode ordinaire. Unity vérifie le paramètre lui-même, consigne une erreur Script error: OnTriggerEnter indiquant This message parameter has to be of type: Collider, et n’appelle jamais la méthode. Collision est utilisé avec OnCollisionEnter, lorsque deux corps solides se rencontrent en un point de contact. Un trigger n’a aucun contact à signaler, seulement le collider ; il reçoit donc un Collider.

challenge icon

Défi

Facile

Les véhicules traversent la barrière de péage, un déclencheur. Le script Driver les déplace et est terminé. Écris le script TollGate de la barrière :

  • Chaque véhicule étiqueté Car paie le toll (3) : ajoute-le à collected et affiche le total, Toll: 3 pour la première voiture, puis Toll: 6.
  • Tout le reste, comme le cycliste, passe gratuitement et n’affiche rien.

Appuie d’abord sur Play : la Console affiche déjà une erreur de script concernant la méthode telle qu’elle est écrite. Corrige-la, puis clique sur Check.

Essayez vous-même

using UnityEngine;

public class TollGate : MonoBehaviour
{
    public int toll = 3;
    int collected;

    void OnTriggerEnter(Collision collision)
    {
        // Les voitures paient le péage ; tout le reste passe gratuitement
    }
}
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