Andar
Para que el jugador ande, de alguna forma necesitamos decirle al
Animator que efectivamente se está moviendo. Para ello utilizamos el listado de parámetros del
Animator del
Jugador, que ahora mismo está vacío:
Haz clic en el icono + a la derecha de dicho listado y añade un nuevo
bool llamado
isWalking. Inicialmente estará desmarcado (
false) y lo pondremos a
true cuando haya movimiento para indicar al
Animator que debe cambiar de estado:
Selecciona ahora la transición que va de parado (
Idle) a andar (
Walk) y, en el
Inspector de la derecha, agrega una nueva condición (
Conditions) que sea
isWalking = true. Además,
desactiva la opción
Has Exit Time:
De la misma manera, selecciona la transición que va de andar (
Walk) a parado (
Idle) y, en el
Inspector de la derecha, agrega una nueva condición (
Conditions) que sea
isWalking = false. Desactiva de nuevo la opción
Has Exit Time:
A continuación debemos modificar el script
JugadorController de modo que tengamos acceso al
Animator para cambiar el valor de la variable
isWalking en función del movimiento del jugador.
Declara la siguiente variable:
//Declaro la variable para las animaciones
private Animator animator;
Captura el componente en el método
Start():
//Capturo el componente Animator del Jugador
animator = GetComponent<Animator>();
Y añade el siguiente condicional al final del método
FixedUpdate():
//Animación de andar
if (movimiento != Vector3.zero)
{
animator.SetBool("isWalking", true);
}
else
{
animator.SetBool("isWalking", false);
}
Si ahora ejecutas el juego, el
Jugador debería reproducir la animación de andar cuando se encuentre en movimiento, si bien dicha animación se parará enseguida dado que no hemos indicado que se reproduzca en bucle (
loop).
Para ello, accede a tu modelo y en la pestaña
Animation del
Inspector, selecciona
Human Armature | Walk, marca la casilla
Loop Time y haz clic en
Apply.
Ejercicio propuesto 3
Añade la interactividad necesaria para que el jugador realice la animación del salto cuando esté quieto o andando.