The Idle ability adds delayed animation variations while the character is grounded and not moving. Use it for longer-lived poses or small character moments, such as looking around, shifting weight, or checking equipment, after the normal locomotion idle has played for a while.
Idle selects each variation through the Ability Float Data Animator parameter. It stops as soon as the character moves or leaves the ground, so regular movement and airborne abilities can take over.
Add Idle to the character
- Select the character GameObject.
- In the Ultimate Character Locomotion component, expand Abilities.
- Select the plus button and add Idle.
- Drag Idle to the bottom of the Abilities list so every more important non-concurrent ability has a higher priority.
- Select Idle and keep Enabled selected, Start Type set to Automatic, and Stop Type set to Automatic.
- Set Start Delay, Max Ability Float Data Value, Random Value, Min Duration, and Max Duration for the available variations.
- Confirm the character Animator uses Ability Float Data to select the intended idle animations.
The included demo Animator contains three variations in Base Layer > Idle > Idle Blend Tree.

Choose the idle timing
Delay special idles
Start Delay is how long the character must remain grounded and not moving before Idle can start. The default is 15 seconds.
- Use a longer delay when special idles should feel occasional and should not replace the normal locomotion idle too quickly.
- Use a shorter delay when the character should show personality soon after stopping.
- Moving or leaving the ground resets the timer, so the full delay is required again after the character settles.
Match the Animator values
Max Ability Float Data Value is the highest zero-based value in the idle blend tree. It is not the number of animations.
- One variation at value 0 uses a maximum of 0.
- Three variations at values 0, 1, and 2 use a maximum of 2.
- Keep each Animator threshold on a whole-number value because Idle chooses whole-number indices.
Choose random or sequential variations
Enable Random Value to choose any value from 0 through the configured maximum each time. Random selection can choose the same variation more than once in a row.
Disable Random Value to advance through the values in sequence and wrap back to 0 after the maximum. Use this when every variation should appear in a predictable rotation.
Control how long each variation remains active
Min Duration and Max Duration define the time range before Idle chooses another Ability Float Data value. Their defaults are 5 and 10 seconds.
- Increase both values for longer, calmer idle poses.
- Decrease them for more frequent variation.
- Keep Min Duration at or below Max Duration and allow enough time for the associated animation to read clearly.
How Idle runs
While inactive, Idle waits until the character is grounded, not moving, and has remained that way for Start Delay. Any movement or ungrounded frame clears that pending timer.
When Idle starts, it chooses the first Ability Float Data value and updates the Animator. It then schedules another selection after a random time between Min Duration and Max Duration. This continues while the ability remains active.
Idle stops automatically when the character starts moving or is no longer grounded. Stopping cancels the pending value change and resets the start timer. Placing Idle at the bottom of the list also allows a higher-priority non-concurrent ability to replace it immediately.
Verify in Play Mode
- Keep the Ultimate Character Locomotion Inspector visible and leave the character grounded without movement for longer than Start Delay.
- Confirm (Active) appears beside Idle and the Animator’s Ability Float Data changes to a whole value within the configured range.
- Wait through several duration intervals and confirm the expected random or sequential variations play.
- Move the character and confirm Idle becomes inactive immediately.
- Stop again and confirm the full Start Delay passes before Idle restarts.
- Walk from a ledge or trigger another higher-priority ability and confirm it replaces Idle without waiting for the current variation to finish.
Troubleshoot Idle
- Idle never starts: confirm Enabled, Start Type: Automatic, that the character is grounded and not moving, and that no higher-priority non-concurrent ability remains active. Wait for the complete Start Delay.
- Idle starts too soon: increase Start Delay. Remember that normal locomotion idle animation does not require this ability.
- A variation is missing or the wrong animation plays: set Max Ability Float Data Value to the highest zero-based blend value and confirm the blend tree uses Ability Float Data at matching whole-number thresholds.
- The same random animation repeats: this is valid when Random Value is enabled. Disable it for a sequential cycle.
- Variations change too quickly or slowly: adjust Min Duration and Max Duration, keeping the minimum no greater than the maximum.
- Idle prevents another action: move Idle to the bottom of Abilities and verify the intended action is non-concurrent or explicitly stops Idle.
- Idle does not stop when input begins: confirm the Ultimate Character Locomotion component reports the character as moving and that Stop Type remains Automatic.
Related topics
- Abilities explains automatic activation, list priority, and the (Active) runtime indicator.
- Quick Start, Quick Stop, and Quick Turn cover automatic movement-transition animations that should also remain near the bottom of the list.
- Animator Parameters explains Ability Float Data and the other character parameters.
- Scheduler explains the timed callback system used to rotate idle values.
Developer reference
Idle uses the inherited Automatic start type and an Automatic stop type. Its runtime behavior is:
- CanStartAbility: begins the delay only while the character is grounded and not moving, then permits the ability after Start Delay.
- AbilityFloatData: returns the current whole-number variation as a float for the Animator.
- Random Value: chooses an integer from
0through Max Ability Float Data Value, inclusive. - Sequential Value: increments the current value and wraps with the configured maximum.
- Scheduled update: chooses the next value after a random duration between Min Duration and Max Duration.
- CanStopAbility: stops when the character moves or is no longer grounded.
- AbilityStopped: resets the delay and cancels the scheduled value update.