#3 Tipos de Colliders. Interacción con RigidBody. [Laberinto en Primera Persona]

ACTUALIZACIÓN IMPORTANTE

PUBLICARÉ LOS ARCHIVOS DE ESTE PROYECTO CUANDO EL CANAL LLEGUE A 1000 SUSCRIPTORES

DEJO UNA COMPILACIÓN ACTUALIZADA PARA QUE PUEDAS PROBAR, PUEDE QUE TARDE UN POQUITO EN CARGAR
🔻

MOVIMIENTO: WASD CÁMARA: MOUSE

A PARTIR DE AQUÍ CONTINÚA EL ARTÍCULO ORIGINAL

Introducción

En este artícu­lo vamos a ver los difer­entes tipos de Col­lid­ers y cómo apli­car­los a nue­stro mod­e­los 3D, además vemos cómo inter­ac­túan con la com­po­nente Rigid­Body. Los Col­lid­ers nos per­miten, por ejem­p­lo, evi­tar que un per­son­aje atraviese obje­tos o pare­des en Unity. 

Página principal del proyecto

Antes de comen­zar te invi­to a ver el video 3 de la serie del Laberinto.

Tipos de Colliders. Interacción con RigidBody
👉

POR FAVOR CONSIDERA SUSCRIBIRTE AL CANAL

¿Qué son los Colliders en Unity?

Los Col­lid­ers son com­po­nentes que podemos asig­nar a nue­stros GameOb­jects y que per­miten que puedan col­i­sion­ar con otros GameOb­jects que tam­bién tienen asig­na­do Colliders.

Son impor­tantes para lograr col­i­siones en físi­ca, ya que tra­ba­jarán en con­jun­to con las com­po­nentes Rigid­Body. Además nos sir­ven para lim­i­tar los espa­cios en los que los GameOb­jects pueden moverse.

Tipos de Colliders en Unity

Comen­zamos despe­jan­do la esce­na de los GameOb­jects que quedaron en el video ante­ri­or. Vamos a dejar el pedestal con la espa­da y el reloj, para poder analizar los dis­tin­tos tipos de Colliders.

escena de unity3d se observa un suelo con textura de cesped
Fig. 1: Esta­do ini­cial de la esce­na para comen­zar a trabajar.

La espa­da y el pedestal son dos obje­tos sep­a­ra­dos agru­pa­dos bajo un mis­mo padre, así que podemos selec­cionar la espa­da y apartar­la del pedestal (fig­uras 2 y 3).

escena en unity3d un pedestal con una espada y un reloj de péndulo
Fig. 2: El GameOb­ject espa­da se encuen­tra selec­ciona­do en la jerarquía.
escena en unity3d un pedestal con una espada y un reloj de péndulo
Fig. 3: El GameOb­ject espa­da se aparta del pedestal.

Además vamos a crear un cubo y una esfera hacien­do clic dere­cho en la jer­ar­quía y usan­do el menú 3D Object. Aco­modamos los obje­tos para que se vean como en la figu­ra 4.

escena en unity3d se observa un suelo con textura de cesped con margaritas. una espada, un cubo blanco y una esfera blanca.
Fig. 4: Arreg­lo de GameOb­jects para analizar los dis­tin­tos tipos de Colliders.

Con el cubo selec­ciona­do, obser­va­mos sus propiedades en el inspec­tor. Por defec­to viene con varias propiedades inclu­idas, entre ellas se encuen­tra una com­po­nente Box Collider.

inspector de un gameobject cubo en unity3d
Fig. 5: Visu­al­ización del inspec­tor de un GameOb­ject tipo cubo. 

Las com­po­nentes podemos elim­i­narlas uti­lizan­do el pequeño engrana­je de la parte supe­ri­or derecha de una com­po­nente y hacien­do clic en Remove Com­po­nent, como se obser­va en la figu­ra 6.

inspector de un gameobject cubo en unity3d. aparece un menú que permite eliminar el componente
Fig. 6: Hacien­do clic en el engrana­je de la esquina supe­ri­or derecha podemos elim­i­nar un componente.

En la sigu­iente figu­ra vemos que la com­po­nente Box Col­lid­er se ha eliminado.

inspector de un gameobject cubo sin box collider en unity3d
Fig. 7: El Box Col­lid­er ha sido elim­i­na­do de las componentes.

Podemos agre­gar nuevas com­po­nentes a nue­stros GameOb­jects hacien­do clic en el botón "Add Com­po­nent", al hac­er­lo se nos despl­ie­ga una ven­tana con todas las com­po­nentes y que cuen­ta con una bar­ra de búsque­da. Si escribi­mos "Col­lid­er" en la bar­ra de búsque­da podemos obser­var los dis­tin­tos tipos de Col­lid­er que podemos añadir a nue­stro GameObject.

Por supuesto hay Col­lid­ers que son más apropi­a­dos que otros para un GameOb­ject en par­tic­u­lar, esto va a depen­der de la geometría del GameOb­ject y del uso que vayamos a darle.

inspector de un gameobject cubo en unity3d. el menu add component está desplegado.
Fig. 8: Al pul­sar el botón Add Com­po­nent nos aparece una lista con todos los com­po­nentes que podemos agre­gar al GameObject.

Vamos a desac­ti­var el com­po­nente MeshRen­der­er del cubo para obser­var mejor el Col­lid­er, las com­po­nentes sue­len traer una pequeña casil­la a la izquier­da de su nom­bre para acti­var­las o desactivarlas.

En la figu­ra 9 obser­va­mos que el Box Col­lid­er se rep­re­sen­ta como un Cubo definido por aris­tas de col­or verde. Debido a que el GameOb­ject es un cubo, este tipo de Col­lid­er enca­ja per­fec­ta­mente en su geometría.

una escena de unity 3d con un suelo con una textura de cesped con margaritas, se observa una esfera blanca y aristas color verde de un cubo.
Fig. 9: Al apa­gar el com­po­nente Mesh Ren­der­er del GameOb­ject cubo podemos visu­alizar el Box Collider.

Aho­ra selec­cionemos en la jer­ar­quía el GameOb­ject esfera y veamos sus propiedades en el inspector.

Esta vez tiene asig­na­do un tipo de Col­lid­er esférico.

inspector de un gameobject esfera en unity3d
Fig. 10: Visu­al­ización del inspec­tor de un GameOb­ject tipo esfera.

Nue­va­mente desac­ti­va­mos el com­po­nente Mesh Ren­der­er para obser­var el Col­lid­er (figu­ra 11). De nue­vo, como se tra­ta de un GameOb­ject esféri­co el tipo de Col­lid­er esféri­co se ajus­ta per­fec­ta­mente a su geometría.

escena en unity3d con un suelo con textura de cesped con margaritas. se observa una esfera definida por líneas color verde. collider esférico.
Fig. 11: Al apa­gar el com­po­nente Mesh Ren­der­er del GameOb­ject esfera podemos visu­alizar el Sphere Col­lid­er.

Veamos que pasa con la espa­da, la selec­cionamos en la jer­ar­quía y obser­va­mos sus propiedades en el inspec­tor. A difer­en­cia de los dos GameOb­jects ante­ri­ores, la espa­da no trae asig­na­do un Col­lid­er por defec­to, debe­mos asig­nar uno man­ual­mente como se mostró en la figu­ra 8.

escena en unity 3d suelo con textura de cesped con margaritas, una espada apuntando hacia abajo y medio reloj.
Fig. 12: Selec­cionamos la espa­da que pre­vi­a­mente desplazamos del pedestal.

Primero asig­namos un Box Col­lid­er. En este caso como se obser­va en la figu­ra 13, vemos que aparece una caja con el mín­i­mo vol­u­men nece­sario para con­tener total­mente el GameOb­ject espada.

escena en unity 3d con suelo con textura de cesped con margaritas, se observa una espada seleccionada con un box collider que la recubre.
Fig. 13: GameOb­ject espa­da con un Box Col­lid­er asignado.

Luego probamos con un tipo de Col­lid­er esféri­co. Como se obser­va en la figu­ra 14, el Col­lid­er es una esfera con el radio mín­i­mo tal que la esfera con­tenga total­mente al GameOb­ject espada.

escena en unity 3d con suelo con textura de cesped con margaritas, se observa una espada seleccionada con un sphere collider que la recubre. se observa un reloj de péndulo de oro.
Fig. 14: GameOb­ject espa­da con un Sphere Col­lid­er asig­na­do.

Aho­ra vamos a agre­gar­le un Mesh Col­lid­er, este tipo de Col­lid­er uti­lizará la geometría del obje­to. En la figu­ra 15 se obser­van sus propiedades en el inspector.

visualizacion del inspector de un gameobject en unity3d
Fig. 15: Se ha agre­ga­do un com­po­nente Mesh Col­lid­er al GameOb­ject espada.

Desac­ti­va­mos el Mesh Ren­der­er para obser­var el Col­lid­er y lo que vemos es que tiene la for­ma exac­ta de la espa­da, el Col­lid­er coin­cide con el mal­la­do geométri­co de triángulos.

visualización de un mesh collider aplicado a un gameobject espada. mesh renderer desactivado.
Fig. 16: Al apa­gar el com­po­nente Mesh Ren­der­er del GameOb­ject espa­da, podemos visu­alizar el Mesh Collider.

Por supuesto esto con­ll­e­va may­or com­ple­ji­dad en los cál­cu­los de inter­ac­ciones con este tipo de Col­lid­er, entonces ten­emos que decidir si es nece­sario usar­lo, o con un Box Col­lid­er nos es sufi­ciente. Todo depen­derá del propósito.

se observa la geometría de un collider tipo mesh collider en unity 3d.
Fig. 17: Se obser­va que el Mesh Col­lid­er tiene una geometría com­ple­ja, lo que se tra­duce en may­or tiem­po de cómputos.

A con­tin­uación vamos a selec­cionar el GameOb­ject del reloj en la jer­ar­quía y apli­car­le un Mesh Col­lid­er pero esta vez hare­mos clic en la casil­la "Con­vex" que se obser­va en las propiedades del Col­lid­er en la figu­ra 18.

visualización del inspector de un gameobject en unity 3d.
Fig. 18: Se ha aña­di­do un Mesh Col­lid­er al GameOb­ject Reloj y se mar­có la casil­la Convex.

En la figu­ra 19 obser­va­mos que aho­ra el tipo de Col­lid­er respe­ta par­cial­mente la geometría del obje­to. Este tipo de Col­lid­er tam­bién con­ll­e­va may­or can­ti­dad de cál­cu­los, pero no tan­to como sería en el caso ante­ri­or, es como si tuviése­mos un mod­e­lo low poly del GameObject.

Además tiene otras ven­ta­jas como poder uti­lizar­lo en modo Trigger.

reloj de péndulo de oro recubiero por un mesh collider convexo en unity3d. suelo de cesped con margaritas.
Fig. 19: Se visu­al­iza el Mesh Col­lid­er en modo convexo.

Para enten­der cómo se uti­lizan los Col­lid­ers en modo Trig­ger te dejo los sigu­ientes dos artícu­los que for­man parte de la Serie Fun­da­men­tal de Unity.

Método OnTriggerStay para Colliders en modo Trigger

Métodos OnTriggerEnter y OnTriggerExit para Colliders en modo Trigger 

Por aho­ra vimos tres tipos de Col­lid­ers: Box Col­lid­er, Sphere Col­lid­er y Mesh Col­lid­er, pudi­en­do este últi­mo ser uti­liza­do en modo Con­vexo, lo que sim­pli­fi­ca la geometría del Collider.

cuatro tipos de colliders, fondo negro.
Fig. 20: Resumen de tipos de Colliders.

Comportamiento físico de los Colliders.

Los Col­lid­ers se com­por­tan como bar­reras que no pueden atrav­es­arse entre si. Es decir si nue­stro per­son­aje tiene un Col­lid­er e inten­ta atrav­es­ar un GameOb­ject que tiene asig­na­do un Col­lid­er (como podría ser el cubo o un reloj), no podrá hac­er­lo. A menos que este Col­lid­er esté en modo Trigger.

En la figu­ra 21 se obser­va que el per­son­aje está para­do sobre el reloj, el Col­lid­er esféri­co evi­ta que caiga.

modo juego de un proyecto en unity3d
Fig. 21: El jugador se encuen­tra para­do sobre el reloj. El Mesh Col­lid­er que tiene asig­na­do evi­ta que el jugador caiga y lo atraviese.

Aho­ra vamos a situ­ar la esfera sus­pendi­da en el aire sobre el cubo (este últi­mo fue escalado).

se observa una esfera blanca suspendida en el aire sobre un cubo blanco, cesped con margaritas. atardecer nublado.
Fig. 22: Se sitúa la esfera sus­pendi­da sobre el cubo.

Con la esfera selec­ciona­da hace­mos clic en Add Com­po­nent y den­tro de la cat­e­goría Physics selec­cionamos el com­po­nente RigidBody.

visualización del inspector de un gameobject en unity 3d. menu add component desplegado, componente rigidbody seleccionada.
Fig. 23: Se añade un com­po­nente Rigid­Body a la esfera.

En la figu­ra 24 se obser­van los parámet­ros del com­po­nente Rigid­Body, podemos asig­nar una masa, acti­var o desac­ti­var la gravedad y mod­i­ficar otros parámet­ros rela­ciona­dos a la físi­ca de un objeto.

visualización de la componente rigidbody de un gameobject en unity 3d.
Fig. 24: Visu­al­ización de los parámet­ros de la com­po­nente Rigid­Body en el inspector.

Al entrar en el modo juego vemos que la esfera cae como por efec­to de la gravedad y col­i­siona con la esquina del cubo (en real­i­dad la col­isión se pro­duce con el Collider).

El com­po­nente Rigid­Body le otor­ga un com­por­tamien­to físi­co a la esfera.

modo juego de un proyecto en unity3d. esfera cae por gravedad sobre cubo.
Fig. 25: La pelota ha caí­do por efec­to del com­por­tamien­to grav­i­ta­to­rio que otor­ga el com­po­nente RigidBody.

Agregar Colliders a las piezas del laberinto

Vamos a ir colo­can­do uno por uno todos los pre­fab­ri­ca­dos crea­d­os en el video ante­ri­or y con­fig­u­ran­do sus Col­lid­ers para que el jugador no pue­da atrav­es­ar las paredes.

visualización del programa unity, proyecto de juego de laberinto.
Fig. 26: Abri­mos la car­pe­ta donde se encuen­tran los pre­fab­ri­ca­dos que se hicieron en el video anterior.

Primero la pieza del calle­jón cer­ra­do. Tomamos el Pre­fab de la car­pe­ta del proyec­to y lo arras­tramos a la esce­na o a la jer­ar­quía. Luego en el inspec­tor hace­mos clic en el botón Add Com­po­nent y elegi­mos el com­po­nente Box Collider.

pieza de laberinto colocada en la escena de un proyecto en unity 3d. juego de laberinto.
Fig. 27: Colo­camos en la esce­na la pieza calle­jón cer­ra­do o "Dead End".

Vemos en la figu­ra 28 que el Col­lid­er cubre total­mente el GameOb­ject, lo cual no nos per­mi­tirá cam­i­nar en su interior.

pieza con box collider de laberinto colocada en la escena de un proyecto en unity 3d. juego de laberinto..
Fig. 28: Se ha asig­na­do un Box Col­lid­er a la pieza.

La figu­ra 29 mues­tra que en el modo juego el per­son­aje solo puede avan­zar has­ta la fron­tera del Box Col­lid­er. Este tipo de Col­lid­er no es apropi­a­do para esta pieza.

pieza de laberinto colocada en la escena de un proyecto en unity 3d. juego de laberinto. modo juego, el personaje no puede atravesar el collider.
Fig. 29: El jugador no puede ingre­sar al espa­cio entre las pare­des debido a que es obsta­c­uliza­do por el Box Collider.

Ten­emos una alter­na­ti­va, si hace­mos clic en el botón "Edit Col­lid­er" del Box Col­lid­er (figu­ra 30), podremos mod­i­ficar la posi­ción de sus caras.

visualización de la componente box collider de un gameobject, se ha apretado el botón edit collider.
Fig. 30: Uti­lizan­do el botón Edit Col­lid­er podremos edi­tar las dimen­siones del Col­lid­er.

De esta for­ma podremos hac­er que el Box Col­lid­er encierre una parte del objeto.

pieza con box collider de laberinto colocada en la escena de un proyecto en unity 3d. se cambia las dimensiones del box collider. juego de laberinto.
Fig. 31: Se mueve una de las caras del Col­lid­er para que coin­ci­da con una de las paredes.

Luego aña­di­en­do más Col­lid­ers y repi­tien­do el pro­ce­so ante­ri­or para el resto de la geometría del obje­to, lograríamos rep­re­sen­tar con sufi­ciente pre­cisión la fron­tera del objeto.

visualización del inspector de un gameobject en unity 3d. tres componentes box collider asignadas.
Fig. 32: Agreg­amos dos Box Col­lid­ers más y editamos.

En la figu­ra 33 se obser­va que la super­posi­ción de los tres Box Col­lid­ers cubre toda la geometría de la pieza y per­mite que el jugador pue­da cir­cu­lar por el interior.

pieza de laberinto con tres box colliders colocada en la escena de un proyecto en unity 3d. juego de laberinto.
Fig. 33: Uti­lizan­do tres Box Col­lid­ers se rep­re­sen­ta la fron­tea del GameObject.

Lo ante­ri­or nos sirve, pero vamos a elim­i­nar todos los Box Col­lid­ers y agre­gar un Mesh Col­lid­er en su lugar, en este caso la geometría del muro e bas­tante simple.

visualización del mesh collider de una pieza de laberinto de un proyecto en unity3d. juego de laberinto.
Fig. 34: Con el com­po­nente Mesh Ren­der­er desac­ti­va­do se puede obser­var el com­po­nente Mesh Collider.

Algo muy impor­tante cuan­do esta­mos tratan­do con Pre­fabs es aplicar los cam­bios que vamos hacien­do, para eso uti­lizamos el botón Apply que se encuen­tra en la parte supe­ri­or del inspec­tor (si ten­emos el Pre­fab seleccionado).

visualización del inspector de un gameobject en unity 3d.
Fig. 35: Es nece­sario aplicar los cam­bios que se hacen a un Prefab.

En la figu­ra 36 se obser­va el mod­e­lo del por­tal con un com­po­nente Mesh Col­lid­er asignado.

visualización del mesh collider de un gameobject en un proyecto en unity3d. El gameobject es una puerta con muchos polígonos.
Fig. 36: Mesh Col­lid­er asig­na­do a la puer­ta. Geometría compleja.

No se jus­ti­fi­ca uti­lizar un Mesh Col­lid­er para este mod­e­lo, tenien­do en cuen­ta el uso que le vamos a dar, colo­que­mos mejor un Box Col­lid­er y aplique­mos los cam­bios al Prefab.

escena de un proyecto en unity 3d. suelo de cesped con margarita, portal antiguo de piedras y madera. box collider asignado. juego de laberinto.
Fig. 37: Box Col­lid­er asig­na­do a la puerta.

Lo mis­mo para el mod­e­lo del pedestal, con un Box Col­lid­er nos alcanza.

box collider asignado a un gameobject que es un pedestal de piedra con una espada incrustada. suelo de cesped con margarita. juego de laberinto en unity 3d.
Fig. 38: Box Col­lid­er asig­na­do al pedestal con la espada.

Los relo­jes van a ser obje­tos colec­tables, es decir cuan­do el jugador pase por enci­ma de ellos, estos desa­pare­cerán y darán más tiem­po de juego.

Tenien­do en cuen­ta el uso que les vamos a dar, vamos a uti­lizar un Col­lid­er esféri­co, aumen­tan­do un poco el radio como se obser­va en la figu­ra 39.

sphere collider asignado a un gameobject que es un reloj de péndulo de oro. suelo de cesped con margaritas. juego de laberinto en unity 3d.
Fig. 39: Se asigna un Sphere Col­lid­er en modo Trigger.

Luego vamos a acti­var la opción "Is Trig­ger" de la com­po­nente Sphere Col­lid­er. Esto hará que el Col­lid­er no obsta­c­ulice al jugador y per­mi­ta detec­tar cuan­do este entra en la región esférica.

visualización de las propiades de un sphere collider en un proyecto en unity 3d. is trigger activado. juego de laberinto.
Fig. 40: Acti­van­do la casil­la "Is Trig­ger" indicamos que el Col­lid­er actu­ará como Trigger.

Conclusión

En este artícu­lo estu­di­amos dis­tin­tos tipos de Col­lid­ers y para qué puede ser apropi­a­do cada uno.

Todo depende del propósi­to que teng­amos para el GameOb­ject, por ejem­p­lo en las piezas del laber­in­to uti­lizamos Mesh Col­lid­er porque nece­si­ta­mos poder cam­i­nar por las regiones inte­ri­ores del mod­e­lo. En cam­bio en los relo­jes uti­lizamo un Col­lid­er esféri­co porque es una pieza que el per­son­aje podrá agarrar.

Los Col­lid­ers inter­ac­túan entre si y son muy impor­tantes cuan­do entran en juego las com­po­nentes Rigid­Body, las cuales le dan a los GameOb­ject com­por­tamien­to físico.

guest
4 Comments
Inline Feedbacks
View all comments
YouTube
Scroll al inicio
Secured By miniOrange