Animation and Frame Events
Beginner-friendly timing for cutscenes, doors, and VFX
How animation import works
- Every Action you key in Blender keeps its name when exported. FPE registers mesh animations and sprite animations in a global map when the GLB loads so commands can find them later.
Marking frame events in Blender (no code)
- In Blender, select the object that owns the action/animation and open the Action Editor.
- Open the properties panel in the Action Editor.
- Move the playhead to the frame where you want to trigger a Frame Event.
- In the Frame Events section, add a new row. Each row has a Frame Number and Event Name.
- Use clear event names like
DOOR_OPENEDorPLAY_CHIME. These names must be exactly the same as the names of the Scene Events you want to trigger.
What happens in Godot (Technical)
- When the animation plays, a
FrameEventRunnerwatches the timeline. When the playback head reaches your marked frame (with a small tolerance), the runner dispatches anFPEEventnamed after your Event Name. - Events target the node that owns the animation, so you can catch them with triggers, commands, or your own script.
- All events are reset when the level unloads, preventing cross-level leaks.
Connecting events to actions (Examples)
- Play a sound mid-animation: Add a frame event named
PLAY_CHIME. Place a Trigger or Speaker nearby that listens for thePLAY_CHIMEevent and fires aSpeaker Triggercommand. - Unlock a door on frame 12: Mark frame 12 as
UNLOCK_DOOR. Add a Trigger on the door mesh that reacts toUNLOCK_DOORby disabling the collider or runningAnimationsto play the open clip. - Cutscene camera swap: Use two frame events,
CAM_CUTandCAM_RETURN, and bind them to the Activate Camera and Reactivate Player Camera commands to manage controls and the current view.
Quick checklist if nothing fires
- Double-check the Event Name spelling in Blender and in the listening trigger/command.
- Make sure the GLB was re-exported after adding events and that Godot re-imported it.
Download