OnTriggerEnter
Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 16 de 63.
void OnTriggerEnter(Collider other) se ejecuta una vez, en el paso de física en que otro collider empieza a solaparse con un trigger. other es ese collider, así que other.name, other.gameObject y other.CompareTag("Player") te indican qué entró. Unity lo llama en los scripts de ambos objetos: en el trigger, other es el visitante, y en el visitante, other es el trigger.
Esta línea de meta reacciona al jugador y a nada más, así que una pelota que la atraviesa 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 sigue compilándose, porque para C# es un método ordinario. Unity comprueba el parámetro, 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 trigger no tiene ningún contacto que comunicar, solo el collider, así que recibe un Collider.
Desafío
FácilLos vehículos atraviesan la puerta de peaje, que es un activador. El script Driver los mueve y ya está terminado. Escribe el script TollGate de la puerta:
- Todos los vehículos etiquetados como
Carpagantoll(3): súmalo acollectedy registra el total:Toll: 3para el primer coche y despuésToll: 6. - Cualquier otra cosa, como el ciclista, pasa gratis y no registra nada.
Pulsa Jugar primero: la consola ya muestra un error de script relacionado con el método tal como está escrito. Corrígelo y 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
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
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 lanzamiento2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de monedas
La bola rodanteMonedas para recoger