#6 Métodos OnTriggerEnter y OnTriggerExit. [Serie Fundamental de Unity]

ACTUALIZACIÓN IMPORTANTE

El artícu­lo en el que acabas de entrar es un poco antiguo, actual­mente ten­go un con­tenido más reciente sobre este tema que puedo recomen­darte. Pon­dré al prin­ci­pio este con­tenido más reciente pero podrás leer el con­tenido antiguo más abajo.

Sobre este tema del fun­cionamien­to de los méto­dos OnTrig­ger­Enter y OnTrig­gerEx­it en Uni­ty he crea­do un pro­totipo para Uni­ty que puedes descar­gar e impor­tar en tu proyec­to para ver en detalle su fun­cionamien­to. En este pro­totipo puedes con­tro­lar un obje­to con las fle­chas de direc­ción y al entrar en un col­lid­er pasarán una serie de cosas, todas ellas se logran hacien­do uso de las fun­ciones OnTrig­ger­Enter y OnTriggerExit.

Paquete de Unity para descargar:

A con­tin­uación puedes descar­gar el paque­te de Uni­ty que al impor­tar­lo en tu motor, recu­per­arás los Assets que usamos y podrás pro­bar­lo en tu propia computadora.

🎁 Uni­ty Pack­age: Object detec­tion and Trig­ger Events in Unity

ABOUT THIS SOLUTION

  • By click­ing in Down­load you will get a file with "Uni­ty Pack­age" exten­sion. Drag and drop that file into Uni­ty to import it.
  • When you import this Uni­ty Pack­age you will find a fold­er with 1 scene, 2 scripts and some extras.
  • Inside the scenes you'll find infor­ma­tion about how this solu­tions works.

ACERCA DE ESTOS VÍDEOS

A con­tin­uación tienes dos vídeos que expli­can el fun­cionamien­to del pro­totipo para la detec­ción de un obje­to que entra den­tro de un Col­lid­er. En el vídeo de la izquier­da vemos cómo con­fig­u­rar los Col­lid­ers para que los even­tos OnTrig­ger fun­cio­nen. En el vídeo de la derecha anal­izamos el códi­go del Script donde están definidas las fun­ciones OnTrig­ger­Enter y OnTrig­gerEx­it. Descar­ga el paque­te de Uni­ty aquí.

MI LISTA DE REPRODUCCIÓN DE UNITY👇🏽

A PARTIR DE AQUÍ CONTINUA EL ARTÍCULO ANTERIOR

Introducción

En este artícu­lo vamos a estu­di­ar cómo uti­lizar los méto­dos OnTriggerEnter(Collider c) y OnTriggerExit(Collider c) para detec­tar al jugador en una región deter­mi­na­da y aplicar acciones cuan­do eso ocur­ra. Conc­re­ta­mente vamos a hac­er que la puer­ta del GameDe­vLab se abra cuan­do el jugador esté frente a ella y se cierre cuan­do se aleje.

Página principal del proyecto

Antes de empezar te invi­to a ver el video que hice para resumir este artículo. 

VÍDEOS DEL CANAL CON MÁS BÚSQUEDAS

DE UNITY

DE BLENDER

Procedimiento

Vamos a uti­lizar la estación "OnTriggerEnter/Exit", la cual con­siste en un por­tal que con­duce a una habitación pequeña que por lo pron­to no tiene nada especial. 

Ini­cial­mente la puer­ta se encuen­tra cer­ra­da, nue­stro obje­ti­vo es lograr detec­tar al per­son­aje cuan­do se aprox­i­ma y abrir la puer­ta para dejar­lo entrar y al ale­jarse del por­tal la puer­ta debe cerrarse.

proyecto unity3d, modelo 3d de puerta hecha en blender, laboratorio de programacion
Fig. 1: Estación OnTriggerEnter/Exit del GameDevLab.

Todos los ele­men­tos de la estación están con­tenidos en el GameOb­ject "#6 OnTriggerEnter/Exit".

Fig. 2: Jer­ar­quía del GameDe­vLab. Vamos a tra­ba­jar con el GameOb­ject "#6 OnTriggerEnter/Exit".

Este GameOb­ject tiene asig­na­do el Script "OnTrig­ger­EnterEx­it" que es el que ten­emos que com­ple­tar en esta ocasión.

Fig. 3: Com­po­nentes del GameOb­ject "#6 OnTriggerEnter/Exit". Ten­emos asig­na­do el Script a com­ple­tar en este ejer­ci­cio y un Box Col­lid­er en modo trigger.

Además de un Mesh Col­lid­er para que el per­son­aje no atraviese la estruc­tura, tam­bién cuen­ta con un Box Col­lid­er en modo Trig­ger, como se obser­va en las fig­uras 3 y 4.

proyecto unity3d, modelo 3d de puerta hecha en blender, laboratorio de programacion, collider
Fig. 4: Box Col­lid­er en modo trig­ger que usare­mos para detec­tar al personaje.

Vamos a uti­lizar este Col­lid­er para resolver el ejercicio.

proyecto unity3d, modelo 3d de puerta hecha en blender, laboratorio de programacion
Fig. 5: Aper­tu­ra de la puer­ta una vez que logre­mos resolver el ejercicio.
proyecto unity3d, modelo 3d de puerta hecha en blender, laboratorio de programacion
Fig. 6: Vista des­de el inte­ri­or de la habitación.

Si querés saber un poco más sobre Col­lid­ers te invi­to a ver este video que hice para la serie Mi Primer Juego en Uni­ty.

Resolución

Cuan­do abri­mos el Script OnTrig­ger­EnterEx­it por primera vez nos encon­tramos con dos méto­dos, el méto­do open­Door() que abrirá la puer­ta y el méto­do close­Door() que la cerrará.


Artícu­lo: ¿Qué es un méto­do en programación?

Además, con comen­tar­ios en verde, está indi­ca­da la región donde se sug­iere hac­er la redefini­ción de los méto­dos OnTriggerEnter(Collider c) y OnTriggerExit(Collider c).

Fig. 7: Script OnTrig­ger­EnterEx­it sin completar.

No nos vamos a pre­ocu­par por cómo se abre y cier­ra la puer­ta porque eso ya viene resuel­to en el GameDevLab.

Funcionamiento de los métodos OnTriggerEnter(Collider c) y OnTriggerExit(Collider c)

En el artícu­lo ante­ri­or vimos cómo fun­ciona­ba el méto­do OnTrig­ger­Stay y lo uti­lizamos para lograr que las esta­ciones de daño y regen­eración afecten la salud del jugador.

Artícu­lo: Méto­do OnTriggerStay.

Para los méto­dos OnTrig­ger­Enter y OnTrig­gerEx­it se nece­si­tan los mis­mos req­ui­si­tos, lo que cam­bia es el momen­to en el que son ejecutados.

Fig. 8: Com­po­nentes nece­sarias para el fun­cionamien­to de los métodos.

Fig. 9: El méto­do OnTrig­ger­Enter se eje­cu­ta automáti­ca­mente en el primer frame en el que un col­lid­er entra en el trigger.

OnTrig­ger­Enter se eje­cu­ta en el momen­to en el que el jugador entra en el trig­ger por primera vez, es decir en el frame ante­ri­or del juego esta­ba fuera del trig­ger y en el frame actu­al está dentro.

Fig. 10: El méto­do OnTrig­gerEx­it se eje­cu­ta automáti­ca­mente en el primer frame en el que un col­lid­er sale del trig­ger al que pre­vi­a­mente había entrado. 

En cam­bio el méto­do OnTrig­gerEx­it se eje­cu­ta en el momen­to en el que el jugador sale del trig­ger, es decir en el frame ante­ri­or del juego se encon­tra­ba den­tro del trig­ger y en el frame actu­al está fuera. 

Fig. 11: Resumen del fun­cionamien­to de los métodos.

Tenien­do esto en mente, lo que podemos hac­er es que la puer­ta se abra en el méto­do OnTrig­ger­Enter y se cierre en el méto­do OnTriggerExit. 

Además vamos a com­pro­bar que el tag del Col­lid­er que entró en el trig­ger es igual a "Play­er", de esa for­ma sabe­mos que se tra­ta del jugador. En la sigu­iente figu­ra se mues­tra la resolución.

Fig. 12: Res­olu­ción del ejer­ci­cio den­tro de la región defini­da por los comen­tar­ios en verde.

Conclusión

Los méto­dos OnTrig­ger­Enter y OnTrig­ger­Enter nos sir­ven para detec­tar GameOb­jects que entran en cier­ta región, esto tiene un sin­número de apli­ca­ciones, por ejem­p­lo acti­var cin­emáti­cas, mecan­is­mos, per­mi­tirnos realizar cier­tas acciones sólo cuan­do esta­mos en cier­ta región, etcétera.

A difer­en­cia del méto­do OnTrig­ger­Stay, estos méto­dos se eje­cu­tan una sola vez cuan­do ocurre una de las situa­ciones antes mencionadas.

Scroll al inicio
Secured By miniOrange