Quick answer: Enable Loop Time on the AnimationClip. Check that no outgoing transition has Has Exit Time firing before 1.0 and looping back into the same state.

An idle animation plays a 2-second breathing cycle. Halfway through, the character pose snaps back to the first frame. The motion is supposed to loop seamlessly; instead it loops at the half-second mark visibly.

Two Possible Causes

1. Loop Time disabled on the clip: the state plays once, hits the end, restarts from 0. The visual is a hard cut. Or the state simply stops at the end pose.

2. Outgoing transition cuts the loop: a transition with Has Exit Time and Exit Time = 0.5 fires at half the clip; if the transition target is the same state (intentionally or via AnyState), you restart from 0 mid-cycle.

Fix 1: Enable Loop Time

  1. Select the AnimationClip asset in Project view.
  2. In the Inspector, scroll to Animation section.
  3. Check Loop Time.
  4. (Optional) Check Loop Pose to compensate for slight pose differences at start/end.
  5. Apply.

Fix 2: Audit Transitions

Open the Animator window. Click the state. Inspector shows transitions out. For each:

Fix 3: Check Speed

The state has a Speed multiplier (default 1). If something writes Speed = 0, the animation freezes; if >1, it plays faster than the clip’s authored length, which can interact with exit time in surprising ways. Leave at 1 unless intentionally varying.

Verifying

Play the scene; watch the idle state. The animation should loop seamlessly for as long as the state is active. Use the Animator window to confirm Normalized Time wraps from 1 back to 0 without leaving the state.

“Loop Time on the clip + clean transitions. Mecanim looping is just two checkboxes when configured right.”

Loop Pose is underused — enables it to smooth small pose differences between first and last frames for truly seamless cycles.