Unity 3D: videojuego runner

Detectando las colisiones

¡Prueba gratis durante 10 días

nuestros 1144 cursos !

Prueba gratis Mostrar modalidades de suscripción
Cuando nuestro personaje empiece a moverse sobre el escenario en 3D, deberemos gestionar o administrar nuestras colisiones, para lo que usaremos código en C# que nos ayude a detectarla y decidir qué haremos al momento que se realice.

Transcripción

Vamos a detectar las colisiones de nuestro personaje con el escenario, con algunos elementos del escenario en este caso. Antes quisiera que vean que he hecho una pequeña modificación a la ubicación de nuestro escenario, ambos prefabs han sido puestos en la ubicación -4. Estaban en 0, los he puesto ambos en el eje Y en -4. Adicional a eso, dentro del player he cambiado los valores un poco más pequeños en 2 o -2 el vertical y en 2 y -2 el horizontal. El resultado, la velocidad sigue siendo lenta, porque necesitamos todavía ir testeando cómo van las cosas. Cuando bajo, la posición máxima de nuestro player va a ser 2. Cuando subo, es el 2 en positivo. Izquierda y derecha, quiero ir por abajo. Entonces, con esos valores ya podemos trabajar. Lo que vamos a hacer es detectar las colisiones cuando estemos sobre un objeto de colisión. Para eso vamos a hacer un poco más despacio, aquí, y vamos a ver contra qué objetos vamos a colisionar. Por ejemplo, voy a colisionar con este puente. Este puente, para poder detectar que estamos colisionando –ojo que ya tiene los Box Collider– vamos a crearle un "tag". Un tag es un identificador, una etiqueta que nos permite ponerle a los objetos en 3D. Voy a ir a Add Tag y aquí en el 'más' voy a poner 'collision'. Selecciono de nuevo el puente con el cual estoy trabajando, es este de acá, a ver me cercioro, sí efectivamente este es. Y en Tag voy a escoger Collision. Lo mismo voy a hacer sobre las vigas, Collision. Todas cada una de ellas tienen la colisión. Este de acá, si bien es cierto se cae, vamos a ponerla en 'collision'. Cada uno de los elementos pondremos una colisión. No estoy seguro si nos vamos a colisionar con este pedazo de puente, pero también le puedo poner la colisión. Y esta es la otra parte de nuestro... por este puente también Collision. Como son los mismos objetos, como he cambiado los del fondo, vamos a revisar que este también sea una colisión. Y una colisión acá, perfecto. Con esto ya podemos intentar probar el tema de las colisiones. Vamos a ir a nuestro código y al final de todas las líneas vamos a escribir: void, On, con 'o' mayúscula, CollisionEnter. Este evento propio de Unity recibe un Collision y le ponemos un nombre 'other' o 'bj' el que queramos. Le pregunto si el objeto que estamos recibiendo de colisión, punto, gameObject, punto, Tag es igual a Collision. Si es igual a Collision, vamos a hacerle primero un print, para ver realmente que estamos coleccionando. Other, punto, gameObject, punto, name, que nos diga el nombre. ¿Con qué estamos colisionando? Vamos a probar, voy a abrir mi consola y la voy a poner por acá. Le doy al play, empezamos a jugar, vamos a ir sobre el puente, no colisionamos. Vamos a ir a buscar a la viga, un momento le doy pausa, voy a mover la viga, está muy allá, le doy play y colisiono con la viga. Vamos a ir de nuevo ahora a la viga de la izquierda, pero el puente no colisiona. Voy, el doy clic y colisiono con otra viga que tiene otro nombre. ¿Qué sucede? A la viga nosotros le hemos puesto –voy a seleccionar– un Rigidbody que permite que tenga un cuerpo, bueno, rígido. Y cuando hemos estado trabajando con el puente no lo hemos hecho. Eso hace la diferencia entre que un objeto pueda o no pueda colisionar. Sin embargo, ya estamos detectando la colisión, aquí tenemos el puente y le voy a agregar un Rigidbody. Un Rigidbody que no está afecto a la gravedad. Vamos a darle play, ahí voy, voy por la parte superior y ahora sí me dice puente, bueno de hecho lo estoy empujando, L, 2L. Entonces digamos que ya estamos colisionando con los objetos. Dentro de nuestro código hemos hecho que, cada vez que detecte una colisión, aparezca por lo pronto un 'print'. Con esto podríamos empezar a mover la animación, que lo veremos más adelante. Sin embargo, yo podría definir muchas más cosas, que ese objeto ya no tenga el Collider, para que no sigamos colisionando, como ha pasado con el puente que hemos estado empujando, ¿no? Y más detalles adicionales: que la velocidad sea menor, que parezca una animación, etc. La ventaja del OnCollisionEnter es eso, que al detectar el 'tag' podemos avanzar o hacer lo que queramos.

Unity 3D: videojuego runner

Crea un tipo de juego muy de moda a día de hoy, un runner en 3D. Emplea el trabajo de tu equipo de diseño y aprende a agregar la física e interacción del personaje con el entorno.

4:29 horas (43 Videos)
Actualmente no hay comentarios.
 
Software:
Fecha de publicación:9/09/2016

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.