diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-29 10:38:53 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-29 10:38:53 +0800 |
| commit | 328760853c15c44d1de915d6c88e0dfd7ddc5af6 (patch) | |
| tree | aa1e570378cfe92b0c4e9f125141a43d0ba89663 /scripts/make-animation-evidence.py | |
| parent | 46073814a67598c1a4122d1cb5abaaeb38c94e6d (diff) | |
| download | living-village-328760853c15c44d1de915d6c88e0dfd7ddc5af6.tar.gz | |
p72: 角色行走四向动画帧提升(6 走 + 2 待机)
CharacterArt 运行时点阵图集从 4 走 + 2 待机扩为 6 走(新增左右低过渡步 4/5,由 1/2 镜像)+ 2 待机,格数 *8、图集 5120x48;VillageArt 帧循环 %6、characterSourceRectangle *8、characterAtlasWidth 5120。同步 P45/Prototype 帧断言、新增 P72 帧表完整性回归、脚本与素材重新生成、维护说明动画语义。白天正午村庄行走实跑证据落 docs/evidence/p72-*。Desktop 343/343、Kernel 120/120、digest 与 p70 一致。
Diffstat (limited to 'scripts/make-animation-evidence.py')
| -rw-r--r-- | scripts/make-animation-evidence.py | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/scripts/make-animation-evidence.py b/scripts/make-animation-evidence.py index 09c35f0..7bb2b26 100644 --- a/scripts/make-animation-evidence.py +++ b/scripts/make-animation-evidence.py @@ -9,8 +9,8 @@ layout is a pure function, running it twice yields byte-identical output. Mirrored math (keep in sync with VillageArt.fs): characterSourceRectangle: - cellIndex = (variantIndex * 4 + directionIndex) * 6 + frameIndex - frameIndex: WalkFrame 0..3 -> 0..3, IdleFrame IdleOne/IdleTwo -> 4/5 + cellIndex = (variantIndex * 4 + directionIndex) * 8 + frameIndex + frameIndex: WalkFrame 0..5 -> 0..5, IdleFrame IdleOne/IdleTwo -> 6/7 rect = (cellIndex * 32, 0, 32, 48) tileSourceRectangle: Grass=0 Water=1 StonePath=2 ... Lantern=20 WaterSpriteC=21 @@ -19,7 +19,7 @@ Mirrored math (keep in sync with VillageArt.fs): waterFrameTick = (tick / 32) % 3 -> WaterSprite / WaterSpriteB / WaterSpriteC smokeFrameTick = (tick / 40) % 3 -> SmokeSpriteA / SmokeSpriteB / SmokeSpriteC idleFrame = (tick / 24) % 2 -> IdleOne / IdleTwo - animationFrame = (tick / 4) % 4 -> FrameOne..FrameFour + animationFrame = (tick / 4) % 6 -> FrameOne..FrameSix """ import hashlib @@ -78,7 +78,7 @@ def make_walk_sheet(sheet, path): height = header + rows * (ch + pad + 16) canvas = Image.new("RGB", (width, height), (245, 243, 236)) draw = ImageDraw.Draw(canvas) - label(draw, (pad, 6), "walk frames 0..3 + idle 0..1 (variant StrawHat)") + label(draw, (pad, 6), "walk frames 0..5 + idle 0..1 (variant StrawHat)") for r, (name, di) in enumerate(DIRECTIONS): y = header + r * (ch + pad + 16) label(draw, (pad, y), name) @@ -115,7 +115,7 @@ def main(): world_sheet = Image.open(WORLD).convert("RGBA") char_sheet = Image.open(CHARS).convert("RGBA") - assert char_sheet.size == (3840, 48), char_sheet.size + assert char_sheet.size == (5120, 48), char_sheet.size assert world_sheet.size == (800, 32), world_sheet.size make_walk_sheet(char_sheet, os.path.join(OUT, "walk-idle-frames.png")) @@ -131,7 +131,7 @@ def main(): # Deterministic tick -> frame table for the report. def walk(t): - return (t // 4) % 4 + return (t // 4) % 6 def idle(t): return (t // 24) % 2 |
