Introducción
En este artículo vamos a ver cómo funciona el método OnTriggerEnter en Unity. Esta función nos permitirá saber cuándo el Collider de un GameObject ha entrado en la región de otro Collider que está configurado como detector. OnTriggerEnter y OnTriggerExit son métodos muy similares pero cambia el momento en el que sucede la ejecución de estos métodos, entender estas funciones nos permitirá ejecutar acciones en el momento preciso en que lo necesitamos.
Estimados internautas
En el canal hay cientos de vídeos acerca de Blender, Unity y programación
en los cuales se resuelven problemas y se aporta información útil sobre estos temas.
🍷🧐

ACERCA DE ESTOS VÍDEOS
A continuación tienes dos vídeos que explican el funcionamiento de un prototipo para la detección de un objeto que entra dentro de un Collider. En el vídeo de la izquierda vemos cómo configurar los Colliders para que los eventos OnTrigger funcionen. En el vídeo de la derecha analizamos el código del Script donde están definidas las funciones OnTriggerEnter y OnTriggerExit. Descarga el paquete de Unity aquí.
MI LISTA DE REPRODUCCIÓN DE UNITY👇🏽

Cómo funciona OnTriggerEnter en Unity
El método OnTriggerEnter se encuentra definido en la clase MonoBehaviour. Es decir que cualquier nuevo Script por defecto lo va a tener por herencia.
Para que ocurra la ejecución de OnTriggerEnter deben darse varias condiciones.
La primera es que deben haber dos GameObjects con Colliders involucrados, uno de los Colliders debe estar en modo Trigger, para esto se debe tildar la casilla "Is Trigger" en el inspector.
Además al menos uno de los GameObjects involucrados debe tener asignado un componente RigidBody, porque OnTriggerEnter está relacionado a la parte física del motor.
Declaración de la función OnTriggerEnter
El hecho de que esté definido en la clase MonoBehaviour y un nuevo Script por defecto la implemente no significa que automáticamente tendremos a OnTriggerEnter en nuestro Script, debemos declararlo y lo hacemos de la siguiente manera:
private void OnTriggerEnter(Collider c){ //Acciones a realizar cuando se detecta una entrada al Trigger. }
Si las condiciones se dán, este método se ejecutará automáticamente, así que en su interior escribimos todo lo que sea necesario hacer cuando eso pase.
El parámetro "Collider c" que recibe el método, es el Collider del GameObject que entró en contacto con el Trigger. Podemos usar este parámetro para hacer muchas cosas, por ejemplo obtener el GameObject que tiene asignado ese collider, esto lo hacemos simplemente con:
c.gameObject
A partir de ahí podemos leer cualquier otra componente que tenga asignado el GameObject, su tag, su layer, modificar lo que necesitemos y se nos permita modificar, ejecutar métodos definidos en Scripts que pueda tener asignados y muchas más acciones.
Para saber más sobre funciones de programación con parámetros te invito a ver este vídeo o leer su artículo correspondiente.
Conclusión
El método OnTriggerEnter nos permite detectar cuándo dos GameObjects solapan sus Colliders, de esa forma podremos aplicar todas las acciones que sean necesarias.
OnTriggerEnter se ejecuta automáticamente, para para esto deben darse algunas condiciones, la primera es que deben haber dos GameObjects con Colliders involucrados y uno de ellos en modo Trigger y la segunda es que al menos uno de los GameObjects debe tener asignada una componente RigidBody.
VÍDEOS DEL CANAL CON MÁS BÚSQUEDAS
DE UNITY
DE BLENDER
Paquete para descargar:
A continuación puedes descargar el paquete de Unity que al importarlo en tu motor, recuperarás los Assets que usamos y podrás probarlo en tu propia computadora.
ABOUT THIS SOLUTION
- By clicking in Download you will get a file with "Unity Package" extension. Drag and drop that file into Unity to import it.
- When you import this Unity Package you will find a folder with 1 scene, 2 scripts and some extras.
- Inside the scenes you'll find information about how this solutions works.
If you have questions about Blender, Unity or this download leave a comment in any video of the channel
I normally respond within hours