Quick Start plays a dedicated first-step animation when a grounded character begins moving from rest. Use it when walking, running, strafing, or turning should have an authored start instead of blending directly from idle into the normal locomotion loop.

Quick Start selects an Animator variation; it does not add force or make the character move faster. The character continues to use its normal locomotion input, motor, gravity, and root-motion configuration while the start animation plays.

Before you begin

  • The character needs Ultimate Character Locomotion, an Animator Monitor, and an Animator Controller with the standard AbilityIndex, AbilityChange, and AbilityIntData parameters.
  • The Animator Controller needs a Quick Start state or sub-state machine that recognizes Ability Index Parameter 6 and the direction value described below.
  • Every start clip that can play must send OnAnimatorStartMovementComplete. Quick Start has no duration fallback and cannot stop normally until this event arrives.
  • Test ordinary grounded movement first. Quick Start does not activate while the character is airborne.

Add Quick Start to the character

  1. Select the character GameObject.
  2. In Ultimate Character Locomotion, expand Abilities, select the plus button, and add Quick Start.
  3. Move Quick Start near the bottom of the list, below gameplay abilities that must take priority. It is nonconcurrent, so placing it too high can prevent a lower row from starting until the start animation completes.
  4. Keep Speed Change above Quick Start when Speed Change supplies the larger input values used to select the run-start animations. Ability rows update from top to bottom.
  5. Keep Enabled selected, Start Type set to Automatic, and Stop Type set to Automatic. Do not add an Input Name.
  6. Keep Ability Index Parameter at 6 when using the shipped Version 3 Animator setup, or update both this value and the custom Animator transition conditions together.
  7. Start with Max Input Count at its default of 10 and Speed Change Threshold at its default of 1.
  8. Keep Allow Positional Input and Allow Rotational Input enabled unless the start clip deliberately takes complete control. Quick Start does not override gravity, root-motion position, or root-motion rotation by default.

Keep Quick Start, Quick Stop, and Quick Turn together near the bottom, with Idle below the movement-transition abilities. Higher-priority gameplay abilities can then replace Quick Start immediately instead of waiting for its completion event.

Set up the start animations

  1. Open Window > Animation > Animator and locate or create the start-movement state or sub-state machine.
  2. Enter that flow when AbilityIndex equals 6. Use AbilityChange with the entry condition when the state must respond as soon as Quick Start becomes the selected ability.
  3. Use AbilityIntData to select the walk or run clip for the current direction. The shipped mapping is listed below.
  4. Keep each start clip non-looping and transition from it into the matching normal locomotion state.
  5. Open each reachable clip in Window > Animation > Animation and add an Animation Event near the intended handoff frame.
  6. Set the event Function to ExecuteEvent and its String value to OnAnimatorStartMovementComplete. The spelling and capitalization must match exactly.
  7. Repeat the event setup for every first-person or third-person clip that can drive this ability, then test every reachable direction.

The 16 shipped Version 3 start clips already contain OnAnimatorStartMovementComplete. Replaced or project-specific clips must preserve that event.

Key choices

Choose the walk and run threshold

Speed Change Threshold compares each processed locomotion-input axis with the configured value. An axis must be strictly greater than the positive threshold or less than its negative equivalent to select a run variation; otherwise Quick Start selects the corresponding walk variation.

The default threshold is 1. With normal input values of -1 through 1, this selects walk starts. The default Speed Change multiplier raises a full input axis to -2 or 2, allowing Quick Start to select the run set when Speed Change updates first.

  • Keep Speed Change above Quick Start when it defines walk versus run.
  • Lower the threshold when analog input within the usual -1 to 1 range should select run starts without Speed Change.
  • Match the threshold to the values visible in HorizontalMovement and ForwardMovement, not to world-space velocity.
  • Test diagonal input because both processed axes participate in the turn-variant choice.

Match the direction data to the Animator

Quick Start exposes the selected variation through AbilityIntData:

Start direction Walk value Run value
Forward 1 9
Forward and turn left 2 10
Forward and turn right 3 11
Strafe left 4 12
Strafe right 5 13
Backward 6 14
Backward and turn left 7 15
Backward and turn right 8 16

These directions come from the input vector produced by the active Movement Type. They are not calculated from the character’s world-space velocity. A custom Animator can support only the directions the project needs, but every value that can be produced still needs a valid transition or fallback.

Control how soon another start can play

Max Input Count is the size of the recent grounded-movement input history. While the character is stopped, one stored sample is removed on each inactive update. Quick Start does not rearm if movement resumes before that history reaches zero.

  • Increase the value when tiny pauses or noisy input should not replay a start animation.
  • Decrease it when a shorter, deliberate stop should be enough to play another start.
  • Keep the value positive. The default of 10 is a useful starting point for filtering brief stop-and-start changes.

This setting is a restart filter, not the number of frames in the start animation and not a delay before the first movement begins.

Use in-place or root-motion clips

Quick Start leaves positional input and rotational input enabled and makes no root-motion override by default.

  • For an in-place start clip, the normal character motor continues to move the character while the Animator supplies the pose.
  • For a root-motion start clip, use the character’s normal root-motion setup and verify that the authored displacement blends cleanly into locomotion.
  • Do not use Speed Change Threshold to tune physical acceleration. It only chooses between animation variants.

How Quick Start runs

Ultimate Character Locomotion evaluates automatic abilities in list order. Quick Start can begin only when it is enabled, the character is grounded, the processed input is nonzero, no higher-priority nonconcurrent ability blocks it, and the stored-input restart filter has cleared.

When it starts, Quick Start reads the processed horizontal and forward input, assigns the matching walk or run direction to AbilityIntData, clears its stored history, and marks itself ineligible to start again until the character reports that it has stopped. Animator Monitor then exposes Ability Index 6 and the selected Ability Int Data value to the Animator.

Because Stop Type is Automatic, the controller tries to stop Quick Start on each update. CanStopAbility remains false until OnAnimatorStartMovementComplete arrives. The completion event permits the next automatic stop, after which the regular locomotion state takes over. A higher-priority nonconcurrent ability can force-stop Quick Start before that event.

When a stored-input ability stops, it resets the shared stored-input history used by Quick Start, Quick Stop, and Quick Turn. Leaving the ground or performing an immediate transform change also clears that history so stale movement samples do not trigger a transition later.

Verify in Play Mode

  1. Keep Ultimate Character Locomotion and the Animator Parameters tab visible. Begin from a grounded, stationary character.
  2. Press forward without Speed Change. Confirm Quick Start displays (Active), AbilityIndex becomes 6, AbilityIntData becomes 1, and the walk-forward start clip plays.
  3. Confirm the clip sends OnAnimatorStartMovementComplete, Quick Start becomes inactive, and the Animator blends into normal forward locomotion.
  4. Stop long enough for the stored-input history to clear, hold the Speed Change input, and move forward again. With Speed Change above Quick Start, confirm AbilityIntData becomes 9 and the run-forward start plays.
  5. Repeat with backward, strafe, and diagonal input. Confirm the data values and clips match the table.
  6. Make a very brief stop and resume movement. Confirm Quick Start does not replay while stored input remains. Then stop longer and confirm it can play again.
  7. Start a higher-priority action while Quick Start is active and confirm that action replaces it immediately.
  8. If the project supports both in-place and root-motion characters, verify that neither setup gains an unintended speed burst or foot slide at the handoff.

Troubleshoot Quick Start

Symptom Check Fix
Quick Start never becomes active. Confirm Enabled, Start Type: Automatic, grounded state, nonzero processed input, and that no higher-priority nonconcurrent ability remains active. Restore the defaults, test from a complete stop, and resolve the active higher-priority ability.
Quick Start activates, but no start animation plays. Watch AbilityIndex and AbilityIntData. The Animator may not have a transition for index 6 and the selected direction value. Match Ability Index Parameter and every reachable data value to the custom Animator transitions.
The walk start plays while Speed Change is active. The processed input may not exceed Speed Change Threshold, or Speed Change may be below Quick Start and update afterward. Move Speed Change above Quick Start and compare the live movement parameters with the threshold.
The wrong direction animation plays. The Animator mapping may not match the shipped data table, or the Movement Type may transform input differently than expected. Inspect HorizontalMovement, ForwardMovement, and AbilityIntData, then correct the transition conditions.
Quick Start remains active after the clip ends. The active clip may not send the exact completion event. There is no duration fallback. Add an event with Function: ExecuteEvent and String OnAnimatorStartMovementComplete to every reachable clip.
Quick Start replays after tiny pauses. Max Input Count may be too small, or the input dead zone may repeatedly report moving and stopped. Increase Max Input Count and correct the input dead zone so deliberate stops are distinct from noise.
Quick Start does not replay after a deliberate stop. The stored input history may not have drained before movement resumed. Wait through a complete stop or reduce Max Input Count carefully.
A gameplay ability cannot start during the first-step animation. Quick Start may be above that nonconcurrent ability in the list. Move Quick Start near the bottom so the gameplay ability has the lower list index and higher priority.
The pose plays, but movement speed or displacement is wrong. Quick Start does not change speed and does not force a root-motion mode. Correct the locomotion speed, Speed Change setup, clip root motion, or character root-motion setting rather than the direction threshold.
Quick Start does not play while airborne. Stored Input Ability Base requires the character to be grounded. Use Fall, Jump, or a project-specific airborne ability for that transition instead.
  • Quick Stop plays the matching authored transition when movement ends.
  • Quick Turn handles a sharp direction change while the character is moving.
  • Speed Change supplies the multiplied input that the default threshold uses to distinguish run starts.
  • Abilities explains automatic activation, nonconcurrent priority, list order, and the runtime active indicator.
  • Animator Parameters explains AbilityIndex, AbilityChange, AbilityIntData, and the movement parameters.
  • Default Animator Values lists the shipped Version 3 ability indices.
  • Replacing Animations covers preserving events when start clips are changed.
  • Animation Event Trigger explains the ExecuteEvent and String workflow used by UCC animation events.

Developer reference

Quick Start has these released Version 3 defaults and runtime rules:

  • Start Type: Automatic; Stop Type: Automatic; Ability Index Parameter: 6; Concurrent: False.
  • Max Input Count: 10; Speed Change Threshold: 1.
  • Allow Positional Input and Allow Rotational Input: enabled. Gravity, root-motion position, and root-motion rotation use No Override.
  • StoredInputAbilityBase stores raw grounded movement input, clears it while stopped, and rejects starts while ungrounded. Quick Start performs its final direction selection from the processed InputVector.
  • OnCharacterMoving(false) rearms Quick Start. It starts only with a nonzero processed input and only after its stored input count has reached zero.
  • AbilityIntData returns one of the 16 walk/run direction indices in the table. Quick Start does not expose a feature-specific float value.
  • OnAnimatorStartMovementComplete sets the internal completion flag. Automatic stopping succeeds only after that flag is set; a forced stop bypasses it.
  • OnCharacterGrounded(false), OnCharacterImmediateTransformChange, and OnStoredInputAbilityResetStoredInputs clear the inherited input history.
  • The shared OnCharacterAbilityActive event reports Quick Start starting and stopping. When it stops, Stored Input Ability Base sends OnStoredInputAbilityResetStoredInputs so the other stored-input abilities also discard their history.