Menu
CoddyTech

OnTriggerEnter

Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 16 de 71.

void OnTriggerEnter(Collider other) se ejecuta una vez, en el paso de física en el que otro colisionador empieza a superponerse a un activador. other es ese colisionador, así que other.name, other.gameObject y other.CompareTag("Player") te indican qué ha entrado. Unity lo llama en los scripts de ambos objetos: en el activador, other es el objeto que entra y, en este, other es el activador.

Esta línea de meta reacciona al jugador y a nada más, así que una pelota que la cruza rodando no registra nada:

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

El parámetro debe ser un Collider. Si se escribe como void OnTriggerEnter(Collision collision), el script se sigue compilando, porque para C# es un método ordinario. Unity comprueba el parámetro en sí, registra un Script error: OnTriggerEnter que dice This message parameter has to be of type: Collider y nunca llama al método. Collision corresponde a OnCollisionEnter, donde dos cuerpos sólidos se encuentran en un punto de contacto. Un activador no tiene ningún contacto que informar, solo el colisionador, así que recibe un Collider.

challenge icon

Desafío

Fácil

Corrige el método de la barrera de peaje y después cobra el peaje a los coches.

  1. Pulsa «Jugar»: la consola muestra un error sobre el método. Cámbialo a void OnTriggerEnter(Collider other).
  2. Dentro, cuando se cumpla other.CompareTag("Car"), suma toll a collected y registra "Toll: " + collected. El ciclista pasa gratis.

Pulsa «Jugar»: la consola muestra Toll: 3 y después Toll: 6. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

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

    void OnTriggerEnter(Collision collision)
    {
        // Los coches pagan el peaje; todo lo demás pasa gratis
    }
}

Todas las lecciones de Física y jugabilidad

Practica por tu cuenta: Playground de Unity