Hola a todos.
Bienvenidos al video.
En este video quiero mostrarte cómo hacer las animaciones de salto y caída.
Y también quiero limpiar un poco más nuestro código.
Así que primero hagamos las animaciones de salto y caída.
Vamos a la ventana de animación, seleccionamos el animador y luego hacemos clic en Crear nuevo clip en la carpeta de animaciones.
Necesitamos Player Jump.
Y necesitamos uno más.
Crear nuevo clip player.
Hold.
Muy bien.
Ahora seleccionemos la carpeta de gráficos aquí.
Ve al personaje principal, GUI virtual, y toma esta carpeta de animación, solo un sprite y colócalo aquí.
La tasa de muestreo no es importante porque solo tenemos un fotograma aquí.
Ahora seleccionemos jump.
Y colócalo aquí.
Esto será para la animación de salto.
Ahora nuestro objetivo es alternar entre estas dos animaciones cuando el jugador sube o baja.
Por suerte para nosotros eso es muy fácil de hacer y ya hicimos algo similar con el movimiento antes.
Vamos al animador y podemos eliminar estos dos estados de animación.
No los necesitamos.
Y aquí vamos a crear un nuevo Blend Tree que voy a llamar Jump.
Salto.
Muy bien.
Ahora entremos en este archivo de salto.
Selecciona.
Y aquí necesitamos un nuevo parámetro.
No podemos usar la velocidad x para esto.
Para este usaremos la velocidad y.
Así que agregamos un parámetro float aquí y escribimos y velocity.
Ahora vamos a parámetros y elegimos y velocity aquí.
Y ahora necesitamos agregar dos campos de movimiento.
Agregar campo de movimiento.
Uno aquí será player fall.
El segundo será player jump.
Y desmarcamos automático en el umbral y ponemos -1 y 1.
Así que ahora vamos a reproducir la animación.
Y podemos ver que si la velocidad y es mayor que cero, salta.
Si es menor que cero, cae.
Y solo necesitamos actualizar este parámetro en el script.
Eso es todo lo que necesitamos hacer.
Vamos al jugador.
Y actualicemos rápidamente este parámetro.
En la animación, elegimos anim set float para la y.
La velocidad será nuestra velocity.y.
Por ahora.
Solo vamos allí y asegurémonos de que funcione.
Regresamos a Unity.
Vamos a base layer.
Haz clic en play.
Y vemos que y velocity es cero.
Ahora voy a intentar saltar.
Y sí, estamos actualizando el valor.
El único objetivo ahora es conectar estos dos estados aquí, igual que en el primer ejemplo.
Pero esta vez la condición será más simple.
Vamos a comprobar si está en el suelo o no.
Y no necesitamos hacer mucho porque ya tenemos la comprobación de colisión.
Solo necesitamos un parámetro bool que diga is grounded.
Luego hacemos la transición de idle/move a jump/fall.
La condición será is grounded true.
Has exit time y transición en cero.
Ahora hagamos la transición de regreso.
Esta dirá is grounded true.
True.
Un segundo.
Esto era is grounded false?
Sí.
Y si es true, volvemos a idle/move.
Sí.
Perdón.
Espero no haberte confundido.
Cuando vamos de idle a jump, is grounded false.
Cuando vamos de jump/fall a idle/move, debe ser true.
Transición en cero y exit time para transición inmediata entre animaciones.
Ahora necesitamos actualizar este parámetro en el script también.
Volvemos a los scripts y aquí escribimos anim set bool is grounded al booleano que tenemos.
Ok, guardamos esto.
Regresamos a Unity.
Y probamos.
Voy a saltar y la animación de salto y caída está ahí.
Salto y caída.
¡Qué genial es eso!
Muy genial.
Me encanta.
Ahora volvamos al script del jugador.
Aquí quiero mostrarte algunos trucos para que tu código sea más limpio.
No es obligatorio.
No tienes que hacerlo.
Solo me gusta hacerlo.
Y quiero mostrarte a qué me refiero.
Por ejemplo, cuando tienes solo una línea de código en el método como aquí en jump, puedes quitar las llaves.
Puedes escribir igual y mayor que.
Eso es una expresión lambda.
En resumen, es como decir que este método hará esto por nosotros.
Así que velocity = new Vector2(velocity.x, jumpForce).
Y funcionará igual que antes.
Pero como solo tiene una línea, podemos escribirlo así.
Y será más compacto, porque antes ocupaba mucho espacio y ahora solo esto y aún vemos qué hace la función.
Así se hace.
Y sigue funcionando.
Probemos que funciona.
Funciona igual que antes.
Muy bien.
Pero solo puedes hacer esto si tienes una línea de código.
Si tienes más de una, necesitas llaves.
Por ejemplo, debug log, otra línea de código.
Así que así quiero dejarlo por ahora.
Otro truco útil: si en el if solo tienes una línea, puedes quitar las llaves.
Quita las llaves y asegúrate de no dejar espacios vacíos.
Y funcionará igual que antes.
Pero si tienes más de una línea, necesitas las llaves.
Así de simple.
También podríamos hacerlo aquí, pero luego agregaré otra comprobación de colisión, así que lo dejo con llaves.
Para el movimiento también agregaremos cambios después.
¡Listo!
Nos vemos en el próximo video.