Cómo integrar una animación de salto con Unity

Hoy terminé mi primera animación de saltos en Blender, que quería integrar en Unity. Pensé que tendría que hacer algo como "Ok, cuando presiono el botón de salto, disparo la animación de salto y listo". ¡Ni siquiera cerca!

Hice esto y el resultado fue ... no exactamente lo que esperaba.

Estoy bastante seguro de que el proceso que describí anteriormente funcionaría en algunos casos específicos, pero lamentablemente, no en el mío.

Tuve que pasar por un método más largo.

Una mirada rápida a un salto

Un salto regular se puede dividir en tres fases diferentes:

  • Impulso del salto: cuando nuestro personaje toma impulso y salta.
  • Fase de caída: cuando nuestro personaje intenta mantenerse estable mientras está en el aire.
  • Fase de aterrizaje: cuando nuestro personaje, todavía en el aire, se está preparando para llegar al suelo.

¿Cómo funciona en un juego?

Cuando el jugador presiona la barra espaciadora (que obviamente es el botón de salto ), activa la animación de salto.

Una vez que el jugador está en el aire, comienza otra animación: la fase de caída que se repite hasta llegar al suelo.

Entonces comienza la animación de aterrizaje pero con una sutileza: si esta animación comienza cuando el personaje acaba de llegar al suelo, ¡es demasiado tarde! En esta fase sabemos que vamos a tocar el suelo (simplemente porque podemos verlo). Por lo tanto, podemos evaluar fácilmente la distancia y prepararnos para el impacto mientras estamos en el aire.

¡Pensemos cómo nos comportamos cuando saltamos! Cuando vemos que vamos a tocar el suelo , nos estamos preparando para el "impacto". Podemos porque tenemos la visión del terreno y podemos evaluar rápidamente cuándo necesitamos estar preparados.

¡Lo que falta en nuestro caso es algo para evaluar la distancia de nuestro personaje desde el suelo! Te expondré un método para evaluar esta distancia desde el personaje hasta el suelo, pero ten en cuenta que hay muchas otras formas de hacerlo. Se puede usar en otro motor de juego.

El truco es lanzar un rayo de nuestro personaje en la dirección de su velocidad. ¡Entonces podremos activar la animación de aterrizaje en el momento justo justo antes de llegar! 🥳

Listo?

Implementación con Unity

En Unity, hay una herramienta llamada Raycast que nos dará exactamente lo que queremos.

Nosotros procedemos en dos pasos:

  • Enviamos un Raycast en la dirección de nuestra velocidad para determinar la distancia antes de tocar el suelo.
  • Si nuestra velocidad en el eje vertical, y en Unity, es negativa (lo que significa que estamos cayendo) y el suelo está demasiado cerca, entonces activamos la animación de aterrizaje.

Es perfecto, pero ahora, cuando saltamos al juego, el guión activará nuestras animaciones en el momento adecuado. ¡Al infinito y más allá! ️