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.
Desafío
FácilCorrige el método de la barrera de peaje y después cobra el peaje a los coches.
- Pulsa «Jugar»: la consola muestra un error sobre el método. Cámbialo a
void OnTriggerEnter(Collider other). - Dentro, cuando se cumpla
other.CompareTag("Car"), sumatollacollectedy 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
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento4Corrutinas
InvocarInvokeRepeating y CancelInvokeTu primera corrutinaBucles en corrutinasDetener corrutinasRepaso: cuenta regresiva10Proyecto: Escape de la arena
La arenaCazadores2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de Monedas
La pelota rodanteMonedas para recoger3Disparadores
Colisionadores de tipo triggerOnTriggerEnterObjetos coleccionablesLas cajas guardan el restoZonas letalesEntrada y salidaRepaso: llave y puertaPractica por tu cuenta: Playground de Unity