# Animator State does not switch immediately through code, even tho all transitions have "Has Exit Time" checked off

first of all, this is my code, I'm prototyping a state machine using Unity Animator (First Time) and I'm stuck coding a simple burst of speed.

using UnityEngine;
using UnityEngine.AI;

class Dash : State
{
NavMeshAgent agent;
[SerializeField] float Speed = 50;
[SerializeField] float Distance = 1;
float oldSpeed,counter, duration;

public override void onStart(Animator animator, AnimatorStateInfo stateInfo)
{
agent = animator.GetComponent<NavMeshAgent>();
duration = Distance / Speed;
oldSpeed = agent.speed;
agent.speed = Speed;
counter = 0;
}

public override void onUpdate(Animator animator, AnimatorStateInfo stateInfo)
{
counter += Time.deltaTime;
Debug.Log(counter + " of " + duration);
if(counter > duration)
{
Debug.LogError("Dash is finished");
agent.speed = oldSpeed;
animator.SetBool("isDashing", false);
}
}

public override void onExit(Animator animator, AnimatorStateInfo stateInfo)
{

}

}


The issue is that the player standstill for few second after dashing. So I've added some debug.log and this is the result.

As you can see, the state keeps updating even tho the timer has ran up. It even keeps updating after switching to "Idle" state, tho this ends at some point. I've made sure that all transitions have "Has Exit Time" checked off and the Interruption Source = "Current State".

Note: this is just a prototype and the states have no animations still.

• Your transitions are set to take a quarter of a second, with the possibility that they can be interrupted according to valid transitions from the current state (ie. the state they are in the process of leaving). That means you haven't really left that state until some time after the transition started, which seems to be what you're observing in your log. Have you tried making your transitions instantaneous, if that's the behaviour you want? May 21, 2020 at 22:58
• This seems to resolve the issue, I always thought that these setting only works when "Has Exit Time" is checked on. May 22, 2020 at 23:58
• "HasExitTime" means it can only start the transition from a particular exit point in the source state. If you've solved your problem, want to write up your solution as an Answer below? May 23, 2020 at 0:01