¿Cómo funciona OnTriggerEnter en Unity? Aplicaciones

Introducción

En este artícu­lo vamos a ver cómo fun­ciona el méto­do OnTrig­ger­Enter en Uni­ty. Esta fun­ción nos per­mi­tirá saber cuán­do el Col­lid­er de un GameOb­ject ha entra­do en la región de otro Col­lid­er que está con­fig­u­ra­do como detec­tor. OnTrig­ger­Enter y OnTrig­gerEx­it son méto­dos muy sim­i­lares pero cam­bia el momen­to en el que sucede la eje­cu­ción de estos méto­dos, enten­der estas fun­ciones nos per­mi­tirá eje­cu­tar acciones en el momen­to pre­ciso en que lo necesitamos. 

Este artículo incluye un paquete de Unity para descargar:

He crea­do un pro­totipo que per­mite analizar el fun­cionamien­to de los even­tos Trig­ger en Uni­ty, más aba­jo encon­trarás dos vídeos que hablan del fun­cionamien­to de este pro­totipo. Si lo deseas puedes descar­gar el paque­te de Uni­ty e impor­tar­lo en tu pro­pio proyec­to para ver­lo en acción.

NOTA: He actu­al­iza­do el paque­te y no se ve exac­ta­mente igual que en los vídeos pero el fun­cionamien­to es el mismo.

Vídeos que explican el funcionamiento del prototipo anterior:

En este primer vídeove­mos cómo con­fig­u­rar los Col­lid­ers para que los even­tos OnTrig­ger funcionen.


En la segun­da parte anal­izamos el códi­go del Script donde están definidas las fun­ciones OnTrig­ger­Enter y OnTriggerExit.


Cómo funciona OnTriggerEnter en Unity

El méto­do OnTrig­ger­Enter se encuen­tra definido en la clase MonoBe­hav­iour. Es decir que cualquier nue­vo Script por defec­to lo va a ten­er por herencia.

Para que ocur­ra la eje­cu­ción de OnTrig­ger­Enter deben darse varias condiciones. 

La primera es que deben haber dos GameOb­jects con Col­lid­ers involu­cra­dos, uno de los Col­lid­ers debe estar en modo Trig­ger, para esto se debe tildar la casil­la "Is Trig­ger" en el inspector.

Además al menos uno de los GameOb­jects involu­cra­dos debe ten­er asig­na­do un com­po­nente Rigid­Body, porque OnTrig­ger­Enter está rela­ciona­do a la parte físi­ca del motor.

Declaración de la función OnTriggerEnter

El hecho de que esté definido en la clase MonoBe­hav­iour y un nue­vo Script por defec­to la imple­mente no sig­nifi­ca que automáti­ca­mente ten­dremos a OnTrig­ger­Enter en nue­stro Script, debe­mos declarar­lo y lo hace­mos de la sigu­iente manera:


private void OnTriggerEnter(Collider c){

//Acciones a realizar cuando se detecta una entrada al Trigger.

}

Si las condi­ciones se dán, este méto­do se eje­cu­tará automáti­ca­mente, así que en su inte­ri­or escribi­mos todo lo que sea nece­sario hac­er cuan­do eso pase.

El parámetro "Col­lid­er c" que recibe el méto­do, es el Col­lid­er del GameOb­ject que entró en con­tac­to con el Trig­ger. Podemos usar este parámetro para hac­er muchas cosas, por ejem­p­lo obten­er el GameOb­ject que tiene asig­na­do ese col­lid­er, esto lo hace­mos sim­ple­mente con:

c.gameObject

A par­tir de ahí podemos leer cualquier otra com­po­nente que ten­ga asig­na­do el GameOb­ject, su tag, su lay­er, mod­i­ficar lo que nece­site­mos y se nos per­mi­ta mod­i­ficar, eje­cu­tar méto­dos definidos en Scripts que pue­da ten­er asig­na­dos y muchas más acciones.

Para saber más sobre fun­ciones de pro­gra­mación con parámet­ros te invi­to a ver este vídeo o leer su artícu­lo cor­re­spon­di­ente.

Conclusión

El méto­do OnTrig­ger­Enter nos per­mite detec­tar cuán­do dos GameOb­jects sola­pan sus Col­lid­ers, de esa for­ma podremos aplicar todas las acciones que sean necesarias.

OnTrig­ger­Enter se eje­cu­ta automáti­ca­mente, para para esto deben darse algu­nas condi­ciones, la primera es que deben haber dos GameOb­jects con Col­lid­ers involu­cra­dos y uno de ellos en modo Trig­ger y la segun­da es que al menos uno de los GameOb­jects debe ten­er asig­na­da una com­po­nente RigidBody.

Scroll al inicio
Secured By miniOrange