Contenido

Pegar y Trabajar

Script

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.

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.