Animation Event Trigger
An Animation Event Trigger lets an ability or item action occur at a specific point in an animation, or after a fixed duration when clip-driven timing is not needed.
Choose the trigger mode
Animation Event Trigger fields appear throughout Ultimate Character Controller, including Jump Event, landing, interaction, pickup, and item-action timing fields. Expand the field and choose one of two modes:
- Enable Wait For Animation Event when the gameplay action must match a meaningful frame in a clip, such as applying jump force at takeoff or releasing an item during a throw.
- Disable Wait For Animation Event when a consistent timed delay is sufficient. The Duration field then appears and sets the delay in seconds. A Duration of
0triggers the action immediately.
These modes do not act as fallbacks for each other. When Wait For Animation Event is enabled, a missing event leaves the trigger waiting rather than using Duration.
Set up an animation event
The Jump ability provides a clear example:
- Select the character and expand Ultimate Character Locomotion > Abilities > Jump > Jump Event.
- Leave Wait For Animation Event enabled.
- Hover over Jump Event and read its tooltip to find the expected event name. Jump expects
OnAnimatorJump; other fields name their own event.

- Open Window > Animation > Animation, select the clip used by the active Animator state, and add an Animation Event at the frame where the gameplay action should occur.
- Set the event Function to
ExecuteEventand its String value to the exact event name from the trigger tooltip. Event names are case-sensitive.

- Confirm that the Animator Controller actually reaches this clip for the relevant ability or item action.
- If different first-person and third-person clips can perform the action, add the equivalent event to every clip that can be active in its perspective.
For Jump, OnAnimatorJump applies the initial jump force. Other triggers can begin an interaction, release a projectile, complete a reload, or end an ability, depending on the field that owns the trigger.
Set up duration timing
- Expand the Animation Event Trigger field on the ability or item action.
- Disable Wait For Animation Event. The Duration field becomes visible.
- Enter the number of seconds to wait from the point when that trigger begins waiting.
- Test the action after any clip, transition, or playback-speed change and retune Duration if its visible timing has shifted.
Duration timing is useful for an action without a meaningful animation frame, a quick prototype, or a fixed delay that should not depend on a particular clip. Prefer an animation event when different clips or playback speeds still need the action to occur at the correct visual moment.
Verify in Play Mode
- On the character’s Animator Monitor component, expand Editor and enable Log Events.
- Enter Play Mode and perform the configured action.
- In animation-event mode, the Console should log the expected event at the intended frame. For Jump, the message includes
Execute OnAnimatorJump, and the character should receive its jump force at that moment. - Repeat the action several times and from every supported perspective. The result should occur once per action and should not remain waiting.
- In duration mode, confirm that the result occurs after the configured delay. A duration-triggered callback does not produce an
Execute ...message from Animator Monitor because it is not sent by the Animator.
Disable Log Events after testing when the extra Console output is no longer useful.
Troubleshooting
| Symptom | Check | Fix |
|---|---|---|
| The ability or item action remains waiting. | Wait For Animation Event is enabled, but the active clip may not send the expected event. | Add an event with Function set to ExecuteEvent and the exact String value from the trigger tooltip, or deliberately switch the trigger to Duration mode. |
| The event is visible in the clip but nothing happens. | The event name may have different capitalization, the trigger may be in Duration mode, or the Animator Controller may be playing a different clip. | Match the event string exactly, enable Wait For Animation Event, and inspect the active Animator state in Play Mode. |
| The action occurs too early or too late. | Determine whether Log Events reports an Animator event. | For event mode, move the event marker in the clip. For duration mode, adjust Duration. |
| Duration is not visible. | Wait For Animation Event is still enabled. | Disable Wait For Animation Event to expose the Duration field. |
| The timing works in one perspective only. | The first-person and third-person states may use different clips. | Add the same named event at the appropriate frame in every clip that can drive the action. |
| Timing changed after replacing or speeding up a clip. | A fixed duration does not follow the clip’s authored action frame. | Retune Duration or use an animation event so the gameplay action remains attached to the intended frame. |
Related tasks
- Jump uses
OnAnimatorJumpto apply its initial force. - Animator Controller explains how ability and item states are organized.
- Replacing Animations covers preserving event timing when clips change.
- Animation Slot Event Trigger adds slot-aware event names for item actions.
Developer reference
In Ultimate Character Controller Version 3, AnimationEventTrigger.WaitForEvent begins one pending wait. With Wait For Animation Event enabled, Animator Monitor.ExecuteEvent forwards the clip’s String value through the Opsive event system and the matching trigger completes. With the option disabled, the Scheduler invokes the trigger after Duration instead. CancelWaitForEvent ends the pending wait and cancels its scheduled callback.
The trigger owner registers the event name and decides what happens when it completes. For example, Jump registers OnAnimatorJump and applies its force in the completion callback. Item actions that must distinguish slots use AnimationSlotEventTrigger; see the related page rather than adding a slot number to a standard Animation Event Trigger by assumption.