2D Animation
Two kinds of animation, and a way to choose between them:
- Flipbooks — cycle through frames of a sprite sheet: a walk cycle, a spinning coin, an explosion.
- Property animation — keyframe a value over time: bob a crate up and down, fade a sprite out, spin a pickup.
- Animator controllers — decide which animation is playing, including reacting to your gameplay code.
How it fits together
image (.png)
└── sprite sheet (.jsprite) — names each frame of the image
└── clip (.janim) — the animation itself
└── controller (.janimator) — which clip plays, and when
└── Animator component on your entityProperty animation skips the first two steps — a clip that only moves or fades an entity needs no image at all.
New to this? Getting started builds one of each from scratch in about ten minutes.
Playing an animation
Animation runs in Play mode. Select the animated entity to watch its Animator section: which state is playing, how far through it is, and Play/Pause buttons.
Want to see it without pressing Play? Turn on Preview In Editor on the Animator component — the entity animates right in the viewport while you work. It's off by default because it overwrites whatever position you've set for the entity while it's on; turning it back off puts the entity exactly back where it was.
Editors
- Double-click a
.jspriteto open the Sprite Sheet editor — slice a texture into named frames with a visual grid tool instead of hand-writing pixel rectangles. - Double-click a
.janimto open the Timeline panel — clip length, a scrubbable timeline, its tracks, and a Loop toggle. - Double-click a
.janimatorto open the Animator editor — parameters, states, and transitions as tables. Drag a.janimonto a state to assign its clip.
None of the panels pose the viewport while you're scrubbing them — that's what Preview In Editor is for.
What works today
| ✅ Flipbook animation | |
| ✅ Moving, rotating, scaling and fading entities | |
| ✅ Looping, playback speed, per-entity speed | |
| ✅ Visual editors for sprite sheets, clips, and controllers | |
| ✅ Multi-state controllers with transitions | Conditions, "Any" transitions, one-shots via Exit Time |
| ✅ Blending between states | Values cross-fade; sprite frames snap partway through (they can't blend) |
| ✅ Animating a child entity from a parent's clip | Target a track by the child's name |
| ✅ Previewing animation while editing | Preview In Editor, on the Animator component |
| ✅ Driving animation from C# | Parameters, direct state control, state-change callbacks |
| ✅ Animation events calling your scripts | [AnimationEvent]-marked methods |
Multi-state controllers driven by parameters are now a solid choice for anything gameplay needs — not just idle loops.
Next
- Getting started — build your first animation
- Asset files — what goes in each file
- Scripting — drive animation from C#
- Troubleshooting — when nothing moves