Jump to content
mardmmt

ANSWERED Detectar una colisión usando "tags"

Recommended Posts

Buenas, estoy teniendo una duda, y llevo un buen rato buscando una solución, y he encontrado una a medias. Estoy haciendo un juego en el cual un coche debe de esquivar varios obstáculos, y si choca con uno, pierde. La solución que he encontrado es a medias, porque tengo que escribir 6 líneas de código por cada uno de los obstáculos. He pensado en usar las tags, pero solo se detectar una colisión con una tag en 2d. Les agradezco la ayuda de antemano. Les adjunto un recorte de la chapuza que tengo actualmente. Un saludo.imagen_2021-04-01_213708.png

Share this post


Link to post
Share on other sites

Pon todos los obstáculos en una layer y el player en otra. Detecta la layer en vez del nombre o el tag. Y cachea el gameobject del player para no tener que buscarlo cada vez (en el Start p.ej.).

Share this post


Link to post
Share on other sites
13 minutes ago, iRobb said:

Pon todos los obstáculos en una layer y el player en otra. Detecta la layer en vez del nombre o el tag. Y cachea el gameobject del player para no tener que buscarlo cada vez (en el Start p.ej.).

Muchas gracias por responder, pero sinceramente no tengo idea de como se hace eso. Si no es molestia, ¿Me puede explicar?

Share this post


Link to post
Share on other sites

Esto son las layers:

https://docs.unity3d.com/es/530/Manual/Layers.html

Así puedes agrupar todos los diferentes obstáculos en una sola layer y comprobarla al colisionar.

Para cachear el player y no hacer siempre el Find, declara esto:

[SerializeField] private GameObject player;

Al inicio de la class y en el editor arrastra el gameobject del player en la asignación. Luego en la collision ya podrás utilizar "player" en vez de buscarlo cada vez.

Para comprobar si es layer de obstáculo, utiliza mejor el id (número) de la layer. No es muy buena idea, pero dado que comienzas te va a ser más sencillo.

Edited by iRobb

Share this post


Link to post
Share on other sites
1 hour ago, iRobb said:

Esto son las layers:

https://docs.unity3d.com/es/530/Manual/Layers.html

Así puedes agrupar todos los diferentes obstáculos en una sola layer y comprobarla al colisionar.

Para cachear el player y no hacer siempre el Find, declara esto:


[SerializeField] private GameObject player;

Al inicio de la class y en el editor arrastra el gameobject del player en la asignación. Luego en la collision ya podrás utilizar "player" en vez de buscarlo cada vez.

Para comprobar si es layer de obstáculo, utiliza mejor el id (número) de la layer. No es muy buena idea, pero dado que comienzas te va a ser más sencillo.

Lo he conseguido, ¡Muchas gracias por la ayuda!

Share this post


Link to post
Share on other sites

×
×
  • Create New...