Quick answer: Unity Animator stuck in a state because the exit-time transition never resolves? Has Exit Time waits for the source clip to complete - disable it for trigger-based transitions.

Hit a trigger to interrupt an attack animation. The transition condition is true but the state still plays through to the end before switching.

Disable Has Exit Time

On the transition inspector, uncheck Has Exit Time. With it on, Mecanim waits until the source clip reaches the configured exit time before re-evaluating the conditions.

Set Interruption Source

For attack-cancel cases, set Interruption Source to Current State or Next State. The default None ignores trigger changes until the existing transition completes.

Reset triggers on consume

Triggers persist across state changes by default. Call animator.ResetTrigger("attack") after the transition fires to avoid a phantom re-trigger.

“Mecanim exit time is a tool for animation-driven transitions. For input-driven ones, it's a bug factory.”

For combat games, build a small transition matrix in code and bypass most Mecanim transitions. The Animator becomes a playback target rather than a decision-maker.