Pivots, Offsets, and Alignment

Pivots and offsets decide where a sprite sits relative to the character's actual gameplay position. Get them right and animations sit still, hit boxes line up, and the character stops sliding between frames. Get them wrong and every box you tune afterwards is tuned against a moving target.

Pivot vs Sprite Offset

These are two different things and the difference is the whole point of this page.

The pivot is stored per sprite, in spriteSettings.json. It is the anchor point used to place that sprite in the world. Because it belongs to the sprite, changing it affects every animation frame that uses that sprite — across every animation in the character.

The sprite offset (Offset X / Offset Y in the Inspector) is an additional shift applied on top of the pivot.

So when one frame is misaligned but other frames share the same sprite and look correct, do not move the pivot — you will break the others. That is what the sprite offset is for.

In the Inspector, negative Offset X moves the sprite left and negative Offset Y moves it up.

Where the Pivot Should Be

The pivot should track the character's feet, and it should keep tracking them consistently.

This includes jump animations. It is tempting to raise the pivot on airborne frames to make the character look like they are in the air — do not. Height in the air is produced by physics, not by art offsets. If you fake it with the pivot, the character's real position no longer matches where they appear, so hit boxes, shadows, and landings all disagree with the visuals.

The same applies to attacks that lunge forward: move the character with a velocity event, not by walking the pivot sideways.

Editing the Pivot

The pivot is the small magenta square in the preview. Hover it and the cursor becomes a pointing hand.

Drag it to adjust. Dragging up moves the pivot up — the preview matches the editor's convention that positive Y is up, even though the underlying data stores it inverted.

If you cannot see the pivot handle, turn on Logic in the preview toolbar.

Use Ghost while aligning: it draws a faded copy of the previous frame behind the current one, which makes drift between consecutive frames immediately visible. Base does the same with the reference character's sprite for that frame, which is what you want when matching original artwork.

Opponent Offsets

During a throw, the character carries the opponent through a sequence of positions before releasing them. Those positions are the Offsets inside Throw Logic, set frame by frame:

  • X — how far in front the opponent is held (positive is in front).
  • Y — how high (positive is up).
  • Opponent Anim and Opponent Frame — which pose the opponent is shown in.
  • Same Direction — whether the opponent faces the same way as the thrower instead of facing them.

You can drag the opponent's sprite directly in the preview instead of typing numbers, which is much faster for getting a slam or a swing to read well.

Order of Work

Alignment work has a dependency order, and skipping it means doing the later steps twice:

  1. Pivots for idle and movement frames — these set the character's resting position.
  2. Pivots for attack and hit-reaction frames.
  3. Sprite offsets for individual frames that still look wrong.
  4. Hit boxes, body boxes, weapon points, and throw offsets.

Boxes come last because they are positioned relative to the origin. Move a pivot after tuning boxes and the boxes are now wrong.

Related pages: Animations and Frames, Body and Hit Boxes, The Inspector, Logic Events.