jairogarcíarincón

Correr


6.36K

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.


Publicado el 21 de Noviembre de 2024

unityanimaciónhumanoide3d