Contenido

Correr

Script

Para que el jugador pueda correr, vamos a realizar dos aproximaciones diferentes:
  • Que corra con un botón (mayúsculas izquierda)
  • Que corra cuando lleve 3 segundos andando
En el primer caso, simplemente, añadiremos a FixedUpdate una condición que triplique la velocidad al darle al botón (y si no está quieto), y ya de paso, asigne a true un booleano para las animaciones:

//Correr con boton
if (Input.GetButton("Fire3") && movimiento != Vector3.zero)
{
        velocidad = 0.6f;
        animator.SetBool("isRunning", true);
}
else
{
        velocidad = 0.2f;
        animator.SetBool("isRunning", false);
}
Para el segundo caso, primero debemos inicializar una variable para contar el tiempo transcurrido desde que empieza a saltar:

private float tiempoAndar;
Y a continuación añadir a FixedUpdate el código necesario:

//Correr por tiempo
if(movimientoH != 0 && velocidad == 0.2f || movimientoV != 0 && velocidad == 0.2f)
{
        tiempoAndar += Time.deltaTime;
        if (tiempoAndar >= 3.0f)
        {
                velocidad = 0.6f;
                animator.SetBool("isRunning", true);
        }
}

//Detectar cuando deja de moverse
if (movimiento == Vector3.zero && !Input.GetButton("Fire3"))
{
        velocidad = 0.2f;
        animator.SetBool("isRunning", false);
        tiempoAndar = 0.0f;
}

Animaciones

En cuanto a las animaciones, debemos tener en cuenta que nuestro jugador pasará de andando a corriendo y además podrá saltar mientras corre. Igualmente, puede empezar a correr desde parado, con lo que esto nos obliga a hacer un Animator más complejo:
Además, tal y como hicimos en Andar, debemos poner en Loop nuestra animación de correr (en el modelo). En todas las transiciones, como hemos dicho antes, necesitaremos un nuevo bool llamado isRunning y desactivar Has Exit Time:
Ejercicio propuesto 5 Añade la interactividad necesaria para que el jugador realice las animaciones de pegar y trabajar cuando pulse un botón (desde parado, andando o corriendo). Asegúrate además de que no se desplaza ni rota mientras realiza estas acciones.