Unity práctico: Videojuego 3D runner

Agregar animaciones de reacción a una colisión

¡Prueba gratis durante 10 días

nuestros 1199 cursos !

Prueba gratis Mostrar modalidades de suscripción
Una de las acciones más importantes que tendrá nuestro personaje será cuando colisione, ya que detendremos el juego y aplicaremos una animación de impacto, lo que nos permitirá reiniciar el juego y empezar nuevamente.

Transcripción

Ahora que nuestro robot ha colisionado con los objetos, lo lógico sería que tenga una animación. Esta animación la tenemos dentro del 'animator', que se llama 'stop'. Esta animación en la que hace que cuando colisiones se detenga el personaje. Ahora bien, voy a borrar la animación porque nos conviene tener esa animación dentro del 'fly' porque es la única forma para llegar al 'stop', solamente volando. Voy a darle clic derecho, hacer la transición hasta el 'stop' y aquí recuerden le quito la opción de aquí y además le agrego una condición. Cuando la colisión sea en 'true'. Grabo y vamos al código. Dentro del código lo que voy hacer es ir a nuestro método de colisión y debajo del 'print' le vamos a poner que el 'animator.SetBool', que pide dos parámetros. El primero es el nombre de la condición, que es 'collision', y segundo que sea verdadero o falso porque es un 'booleano'. Vamos a comprobarlo ejecutando. Le doy 'play', me acerco, colisiono y bueno algunas cosas, unos detalles interesantes es que bueno se va destruyendo nuestro escenario con el puente y además el personaje sigue avanzando. Recordemos que nosotros hemos modificado la posición en base a dos parámetros. Entonces hagamos algo. Voy a crear una variable privada, 'isCrash', que va a ser de tipo 'boolian', por defecto las variables se ponen en falso, así que le voy a preguntar a mi 'FixedUpdate' si 'isCrash' es 'true' voy a decirle un 'return'. ¿Qué hace el 'return'? Me saca del método. Si 'isCrash' es verdadero estoy colisionando, ya no sigo haciendo todo lo que viene, salgo del método, escapo. Entonces aquí le digo 'isCrash' igual a 'true'. Además de eso vamos a aprobar antes, para no estar avanzando, estoy en el juego, avanzo, choco y ya no sigo avanzando. Se quedó en la caja acá hay que ponerle un 'RigidBody' para que pese. Ya no avanza, está perfecto. Pero cuando presiono 'w' y tampoco puedo avanzar y como que el puente se va destruyendo todo nuestro escenario. Vamos a hacer una cosa. Además del 'isCrash' le voy a decir a nuestro objeto, que es el objeto de colisión, que voy a obtener su 'GetComponent'. Primero le diré que le voy a remover o deshabilitar el 'Collider' con el cual, valga la redundancia, colisioné, igual a falso. Cosa que ya no vuelvo a colisionar con el mismo objeto, porque con toda la velocidad y esto va a dar vuelta por ejemplo la viga y me va a volver a chocar y voy a volver a detenerme, entonces le quito el 'collaider' y ya no hay cómo detectar este 'onCollisionEnter'. Pero además le voy a decir al 'getComponent' del 'RigidBody' que voy a activar su gravedad, para que no siga volando y se vaya, ¿no? Grabo y aprobamos. Avanzo, me choco y no, no lo hizo. Vamos a ver qué pasó. Le puse falso, tiene que estar activo, 'true'. Le doy 'play' y ejecuto. ¡Plum! se cayó. Hay que ponerle 'RigidBody' y además ahora tenemos que hacer que pueda avanzar, porque miren, presiono 'w' y ya me quedé ahí estático. Vamos a decirle ahora que aquí, aquí, aquí... ¡ah! aquí en el 'update' y le voy a preguntar si 'isCrash' es 'true' significa que estoy detenido o he chocado y si es 'false' voy a pedirle que haga todo lo que está acá. Ahí está, 'Unity' no ayuda a intentar el código. Cuando el 'isCrash' está en 'true', o sea he colisionado, le voy a preguntar que cuando quiero volver a ejecutar mi juego, quiero presionar la tecla 'w', bueno voy a repetir esta parte y le voy a decir, primero que nada, que el 'isCrash' es falso. Primero le voy a decir que ya mi valores iniciales van a ser 0 y 0, ¿ok? Y que la velocidad otra vez empieza en 3. Con esto ya tenemos pero, ¿qué tenemos que hacer ahora? volver a ejecutar nuestra animación. Vamos a revisar, cuando yo estoy colisionando me voy al 'stop' y del 'stop' debería irme a estar volando. Esto lo podemos hacer con un evento, ¿sí? Que ya lo hemos hecho, así que ustedes lo podían hacer sin ningún problema. Y del evento otra vez estoy aquí y ya podría ir al 'up' para empezar a volar. Pero voy a 'setear' de una vez mi variable 'SetBool' 'collision' en 'false'. Una vez hecho esto, ya podemos volver a jugar e incluso yo podría decirle, antes de que hagan ustedes el evento por su cuenta, rápidamente le puedo decir que cuando sea en falso, retorne a 'volar'. Veamos, vamos a grabar y ejecutamos. Vamos a volar, nos vamos a chocar, nos chocamos. Acá deberíamos estar un poco moviéndonos, ¿no? Pero bueno, eso lo vamos a ver después. Voy a darle otra vez 'w', sin embargo me dice 'collision' que no existe el 'bool'. A ver, vamos a revisar 'SetBool' el 'animator', 'collision', es que está en 'c' minúscula, cuidado. Grabo, vamos a probar de nuevo y le doy a avanzar. Una vez que avanzo choco y ya está. Otra vez y otra vez empiezo a volar. Vamos a ver si nos podemos chocar con la viga, esta de aquí, vamos a ponerla por acá, sigo, me choco, se cae la viga y yo me quedo acá estático y vuelvo avanzar. Ya va tomando forma nuestro juego, ¿no es cierto? Con esto ya sabemos que podemos resetear nuestras variables dentro del 'isCrash' al momento de querer empezar nuestro juego.

Unity práctico: Videojuego 3D 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.