Quick Stop
Quick Stop plays a planted or decelerating animation when a grounded character releases movement input. Use it when moving directly into the idle blend feels too abrupt. The ability chooses an animation from the character’s recent direction and speed; it does not brake the character or apply movement force.
Before you begin
- The character needs an Ultimate Character Locomotion component and an Animator Monitor.
- The Animator Controller needs Quick Stop states that use Ability Index
7and the Ability Int Data values listed below. - Each stop animation needs an Animation Event that sends
OnAnimatorStopMovementComplete. Quick Stop has no duration fallback while the character remains stationary. - Quick Stop only records movement while the character is grounded.
Add Quick Stop
- Select the character and open Ultimate Character Locomotion.
- Expand Abilities, select +, and add Quick Stop.
- Place Quick Stop near the bottom of the ability list so more important gameplay abilities have higher priority. A useful order is Speed Change, Quick Start, Quick Stop, Quick Turn, then Idle.
- Keep Start Type and Stop Type set to Automatic. Quick Stop does not need an input name.
- Set Ability Index to
7when using the supplied Animator Controller. - Start with the source defaults: Max Input Count
10, Speed Change Threshold1, Stop Threshold0.01, and Required Start Success Count2. - Leave Allow Positional Input and Allow Rotational Input enabled unless the stop animation is designed to control those values. The ability does not override gravity, root-motion position, or root-motion rotation by default.
Configure the Animator
Quick Stop starts with Ability Int Data 0 while it confirms that the character really stopped. After confirmation, it publishes one of these values so the Animator can select the matching stop animation:
| Ability Int Data | Stop direction |
|---|---|
1 |
Walk Forward |
2 |
Walk Forward Turn Left |
3 |
Walk Forward Turn Right |
4 |
Walk Strafe Left |
5 |
Walk Strafe Right |
6 |
Walk Backward |
7 |
Walk Backward Turn Left |
8 |
Walk Backward Turn Right |
9 |
Run Forward |
10 |
Run Forward Turn Left |
11 |
Run Forward Turn Right |
12 |
Run Strafe Left |
13 |
Run Strafe Right |
14 |
Run Backward |
15 |
Run Backward Turn Left |
16 |
Run Backward Turn Right |
Do not enter a stop animation for value 0; it is the confirmation state. Keep the stop clips non-looping and add an Animation Event with Function ExecuteEvent and String OnAnimatorStopMovementComplete. The supplied controller includes walk and run clips for every direction, with left- and right-foot variants.
Choose the stopping behavior
Stop sensitivity
Stop Threshold is compared with the squared magnitude of the current raw input. Its default of 0.01 requires input to be very close to zero. Increase it if a controller dead zone prevents Quick Stop from starting, or reduce it if the ability starts while the player is still intentionally moving.
Required Start Success Count keeps Ability Int Data at 0 for a short confirmation period. The default of 2 gives Quick Turn time to recognize a direction reversal instead of immediately playing a stop. A value of 0 selects the stop animation immediately; larger values add more confirmation time.
Direction and walk/run selection
Max Input Count controls how many recent grounded input samples are averaged. A larger history produces a steadier direction but reacts more slowly to a late direction change. A smaller history follows recent input more closely but can be more sensitive to noisy input.
Speed Change Threshold separates the walk and run variants. The default is 1, and a component must exceed that value to select the corresponding run direction. Keep Speed Change above Quick Stop so its active multiplier is included in the stored movement input. If analog input never exceeds the threshold, lower it to match the character’s configured input range.
Movement during the animation
Quick Stop selects an Animator state but does not slow or reposition the character. The locomotion motor, root-motion settings, and stop clip determine the visible displacement. Match the clip and root-motion configuration if the character slides or travels too far.
How it runs
While inactive, Quick Stop stores recent grounded movement input. It can start automatically after meaningful movement when the current input is moving toward zero and its squared magnitude reaches Stop Threshold.
During the confirmation period, the ability remains active with Ability Int Data 0 and checks that the stop is still valid. Once confirmed, it averages the stored input, chooses the walk or run direction, and updates the Animator parameters. New movement input cancels the stop, which allows a direction reversal to continue into Quick Turn. The animation event completes a stationary stop.
After a confirmed Quick Stop ends, the shared recent-input history is cleared. If it cancels during confirmation, that history remains available so another stored-input ability can evaluate the same movement change.
Verify in Play Mode
- Open the Animator window and watch Ability Index, Ability Int Data, and the active ability list on Ultimate Character Locomotion.
- Walk forward, release input, and confirm that Quick Stop activates with data
0, changes to1after the confirmation period, plays once, and stops afterOnAnimatorStopMovementComplete. - Run forward with Speed Change active, release input, and confirm that the data changes to
9instead of1. - Repeat from backward and strafe movement. Confirm that the values match the table and that each state uses the intended clip.
- Reverse direction quickly. Quick Stop should cancel before selecting a stop clip, allowing Quick Turn to handle the reversal.
- Press movement during a stop. The ability should end immediately and locomotion should resume.
- Start a higher-priority gameplay ability while stopping and confirm that its animation can take priority.
Troubleshooting
| Symptom | Check | Fix |
|---|---|---|
| Quick Stop never starts | The character is grounded, has recent movement history, and raw input reaches Stop Threshold. | Test after sustained grounded movement. Adjust the input dead zone or raise Stop Threshold slightly if released input never reaches the default. |
The ability is active with data 0 |
The confirmation period has not completed, or input resumed before it could complete. | Briefly seeing 0 is expected. Check Required Start Success Count and confirm that released input stays below Stop Threshold. |
| A run uses a walk stop | Speed Change is above Quick Stop and the stored input exceeds Speed Change Threshold. | Correct the ability order or tune the threshold for the configured input multiplier. |
| The wrong directional clip plays | The Animator’s Ability Int Data conditions match the direction table. | Correct the transition value. If input changed just before release, tune Max Input Count to change how much history is averaged. |
| Quick Stop starts too early or too late | Stop Threshold is compared with squared raw-input magnitude. | Lower the value for a stop nearer zero, or raise it for an earlier stop. |
| Quick Stop wins instead of Quick Turn | The abilities are adjacent near the bottom and Required Start Success Count is not too low. | Restore the default confirmation count of 2, then verify the Quick Turn setup and ordering. |
| The ability stays active after the clip ends | The clip or an interruption path did not send OnAnimatorStopMovementComplete, and the character remained stationary. |
Add the exact event to every reachable stop clip. If a transition can leave early, ensure that path also sends the completion event. |
| The character slides during the stop | Quick Stop does not apply braking force. | Match the clip to the character’s root-motion and locomotion settings. |
| Other gameplay abilities cannot start cleanly | Quick Stop is too high in the ability list. | Move it near the bottom, below abilities that should take priority. |
Related tasks
- Quick Start adds a directional start animation before regular locomotion.
- Quick Turn handles rapid movement reversals.
- Speed Change supplies the multiplied input used to distinguish walk and run stops.
- Idle runs after the character has remained still for its configured delay.
- Animator Parameters explains Ability Index, Ability Int Data, and the other runtime parameters.
- Animation Event Trigger explains event-driven and duration-based animation completion patterns.
Developer reference
Quick Stop derives from StoredInputAbilityBase. Player-controlled characters store processed InputVector history but test the current RawInputVector for the stop; AI-controlled characters with a local look source store raw history and test the processed input when checking whether movement is decreasing. The stored average must also have a squared magnitude of at least 0.01, which prevents a stop from starting without meaningful prior movement.
The ability stops when it receives OnAnimatorStopMovementComplete or when current input has a squared magnitude greater than 0.001. Its CanStopAbility implementation uses those conditions even for a forced stop request, so every Animator interruption path should still deliver the completion event when the character can remain stationary. Start and stop are also reported through the standard OnCharacterAbilityActive event.