tools-gamedev

Tools > Guides > 8-direction character animation

Make 8-direction character animation read clearly

Short answer: lay out 8 labeled facing rows (S SE E NE N NW W SW) in one cell size, give hits one readable frame, and name every clip char_action_dir (for example knight_walk_se) so Godot 4, Unity or RPG Maker imports it without guessing. Takes about 10 minutes. The helper below builds your clip names for you.

Guide date: 2026-09-27. Engines covered: Godot 4.x, Unity 2D, RPG Maker MZ/MV. Engine docs: AnimatedSprite2D · Unity Sprite Editor. Buyer words: "I got tired of redrawing diagonals" (pixzels-8dir STRATEGY voice). Sheet numbers below are our own Character Animation Studio Vol.1 counts (judge PASS 2026-09-26); the recipe works on any sheets cut to the same grid.

The 3-step recipe

  1. Lay out rows S to SW, top to bottom. 8 rows per sheet, always in S, SE, E, NE, N, NW, W, SW order, one cell size (this pack uses 64×64): walk 4 cols × 8 rows (256×512), run 6 cols × 8 rows (384×512), attack 4×8 (256×512), idle 2×8 (128×512), hurt 2×8 (128×512). When every sheet shares the order, one recipe imports all of them — and a flipped diagonal stops passing as a real facing. Unsure of a sheet's grid? Drop it into our free Sprite Sheet Slicer & Packer — runs 100% in your browser, no upload — and try columns × rows until each cell holds one clean pose.
  2. Give hits one readable frame. Walk/run loop near 8 fps, attack runs once near 10 fps, idle/hurt loop near 4 fps. Pixel-art hurt needs a single red-flash frame so the hit reads on a phone screen. Test at thumbnail size: if three silhouettes blur together, push distinctness first — for example adventurer blue swordsman vs knight grey helm + crest + greatsword vs villager green hood + staff — before adding frames.
  3. Name clips <char>_<action>_<dir> and import in 3 lines. Example knight_walk_se. Free recipes that work on any sheets cut to the grid above:
    • Godot 4: AnimatedSprite2D + SpriteFrames, H/V frames set to the sheet's cols/rows, Filter Nearest + Reimport. Exporter form: attach the script, call load_sheets("res://cas") then play_action("knight","walk","se").
    • Unity: Texture Type Sprite (2D and UI), Filter Mode Point, Compression None, slice Multiple on the 64×64 grid per the table below.
    • RPG Maker MZ/MV: drop sheets in img/characters/ and point the plugin at them.
    • No engine: open a canvas demo and drive it with arrows (direction), 1–5 (action), C (character) to feel all facings before you import.
Slice grid for 64×64 8-direction sheets (Vol.1 exact sizes; reuse for your own sheets)
SheetCols (frames)Rows (dirs)CellSheet pxStart fps / loop
walk_8dir48 (S,SE,E,NE,N,NW,W,SW)64×64256×5128 / loop
run_8dir6864×64384×5128 / loop
attack_8dir4864×64256×51210 / once
idle_8dir2864×64128×5124 / loop
hurt_8dir2864×64128×5124 / loop

Free helper: 8-direction clip-name calculator

Pick a character, action and facing. The helper shows the clip name, the sheet size, and a copy-paste Godot 4 snippet. Everything runs locally — nothing leaves your device.