Introducción
He creado un prototipo en Unity para mostrar cómo detectar un objeto cuando entra dentro del Collider de otro objeto y aplicar acciones cuando eso ocurre.
Paquete para descargar:
A continuación puedes descargar el paquete de Unity con este prototipo, la idea es que importes el archivo dentro de Unity y así podrás tener los assets que usamos y al abrir la escena verás montado algo similar a lo que se ve en la imagen más arriba.
Por favor lee atentamente lo que digo a continuación sobre el funcionamiento de este prototipo
He creado este prototipo para que entiendas cómo se puede ejecutar una acción cuando detectamos que un Collider entra dentro de otro Collider.
LA EXPLICACIÓN ESTÁ DIVIDIDA EN DOS PARTES, lo hice de esta manera porque así es como resuelvo cualquier problema usando el motor Unity, luego de analizar un problema y crear un plan para solucionarlo, hay que ocuparse de dos cosas, la primera es de los elementos de la escena en Unity, crear GameObjects, asignar componentes y configurar. La otra parte de la que hay que ocuparse es de las líneas de código que resuelvan el problema, pero esto no es posible si no tenemos en claro cuáles son los objetos de la escena que vamos a usar dentro de nuestros scripts.
Vídeo #1: Configuración de los Colliders en Unity
Para empezar vamos a analizar cómo hay que configurar las cosas en Unity para poder detectar que un objeto entra dentro de otro objeto. Es necesario configurar correctamente los Colliders de los objetos y agregar componentes Rigidbody para que un Collider sea capaz de funcionar como Trigger,
SI NO HACES ESTA PARTE BIEN DA IGUAL QUE ESCRIBAS BIEN LAS INTRUCCIONES DE CÓDIGO, SIMPLEMENTE NO VA A FUNCIONAR.
Presta mucha atención al siguiente vídeo:
Vídeo #2: La función OnTriggerEnter
Una vez que nos aseguramos de configurar correctamente los objetos de la escena, ahora sí pasamos a la parte del código, en el siguiente vídeo se ve la función OnTriggerEnter que se ejecuta cuando un Collider es detectado por un Trigger, este concepto se puede usar para muchas cosas distintas, en este caso, cuando el personaje entra al trigger se enciende un objeto, se reproduce un sonido y aparece un enemigo en la escena:
Implementación
El principal objetivo de este prototipo es ayudar a entender cómo funciona el sistema de detección por Colliders en Unity, entender esto te ayudará a sacarle mayor ventaja de acuerdo a tus necesidades.
La mayoría de las acciones que ocurren en este prototipo consisten simplemente en activar y desactivar GameObjects de la escena y también componentes, por ejemplo el «enemigo» que cae del cielo cuando entramos en el Collider es simplemente un GameObject con un componente RigidBody asignado que se encontraba inactivo y, al momento de entrar el collider, pasa a estar activo, haciendo que este objeto caiga del cielo.
A continuación te dejo dos vídeos que explican cómo activar y desactivar GameObjects de la escena y cómo activar y desactivar componentes asignadas a GameObjects de la escena.
Cómo activar y desactivar GameObjects a través de código en Unity
Esto se puede usar para hacer que un objeto aparezca y desaparezca en Unity, en el siguiente vídeo se ven las instrucciones a ejecutar para activar y desactivar un GameObject en Unity
Cómo activar y desactivar Componentes a través de código en Unity
Esto es similar a lo anterior pero se busca activar y desactivar una componente en Unity, se puede usar para que un determinado comportamiento deje de ejecutarse.