jairogarcíarincón
Para las animaciones de pegar y trabajar vamos a necesitar, como en los casos anteriores, sendos booleanos isPunching y isWorking que indiquen que hay que ejecutar esa animación cuando se pulse un botón.
Además, debemos inhabilitar el movimiento y la rotación mientras se esté pulsando el botón de trabajar. Modifica el código de FixedUpdate para que se reproduzcan las animaciones:
//Pegar
if (Input.GetButton("Fire1"))
{
velocidad = 0;
animator.SetBool("isPunching", true);
}
else
{
animator.SetBool("isPunching", false);
}
//Trabajar
if (Input.GetButton("Fire2"))
{
velocidad = 0;
animator.SetBool("isWorking", true);
animator.SetBool("isWalking", false);
animator.SetBool("isRunning", false);
}
else
{
animator.SetBool("isWorking", false);
}
Y los apartados de mover y rotar del mismo método para que solo se ejecuten cuando no se esté pulsando el botón de trabajar:
//Asigno el movimiento (si no está pegando o trabajando)
if (!Input.GetButton("Fire1") && !Input.GetButton("Fire2"))
{
transform.position += movimiento * velocidad;
}
//Rotar (si no está pegando o trabajando)
if (!Input.GetButton("Fire1") && !Input.GetButton("Fire2"))
{
if (movimiento != Vector3.zero)
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(movimiento), 0.15f);
}
}
Como ves, lo que hemos hecho es para al jugador para que trabaje. de este modo se nos simplificarán las transiciones entre animaciones.
Respecto a las animaciones, el Animator se nos vuelve a complicar un poco más:
Y a cada transición debemos añadirle sus correspondientes condiciones (y desactivar Has Exit Time):
Ejercicio propuesto 6
Añade la interactividad necesaria para que el jugador reproduzca la animación de morir cuando pise una trampa. Asegúrate además de que el jugador no se queda flotando en el aire y que los controles de movimiento y rotación dejan de funcionar.
Publicado el 21 de Noviembre de 2024
unityanimaciónhumanoide3d