Hi! I want to make smooth animations for my character so I used blend trees. In my “Walking” blend tree I have the animations for walking, and it’s set to “2D Freeform Directional”. As you can see down below, when I press the WASD key the variables change so I can smoothly go throw the animations.
So the problem is that the Time.deltatime does not reset the “udspeed” back to 0 SMOOTHLY, when I release the “W” key, it is instant. Does anyone know any solution? Thank you in advance.
[SerializeField] Animator anim;
float udspeed = 0f;
float rlspeed = 0f;
// Start is called before the first frame update
void Start()
{
udspeed = 0f;
rlspeed = 0f;
}
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.W))
{
if (udspeed <= 1)
{
udspeed += 2f * Time.deltaTime;
}
}
else if (Input.GetKey(KeyCode.S))
{
if (udspeed >= -1)
{
udspeed -= 2f * Time.deltaTime;
}
}
else if (Input.GetKey(KeyCode.A))
{
if (rlspeed >=-1)
{
rlspeed -= 2f * Time.deltaTime;
}
}
else if (Input.GetKey(KeyCode.D))
{
if (rlspeed <= 1)
{
rlspeed += 2f * Time.deltaTime;
}
}
else if(Input.GetKeyUp(KeyCode.W))
{
if (udspeed > 0)
{
while (udspeed > 0)
{
udspeed -= 1f * Time.deltaTime;
}
}
}
//rlspeed = 0f;
anim.SetFloat("Vertical_f", udspeed);
anim.SetFloat("Horizontal_f", rlspeed);
}