使用 aseprite 工具制作像素动画
首先调用 animation_workflow_guide:使用 use_case="character"、"idle" 或 "environment"。
1. 决定循环
-
在用户已打开的文件中进行动画制作。 如果画布太小或帧数太少,请使用
resize_canvas和add_frames在同一文件上进行操作。切勿使用create_canvas或 Lua 中的Sprite()创建新精灵(请参见 aseprite-live 技能)。 -
长度和时序。 持续时间 = 帧数 × 帧时间。常见的选择是:环境循环使用 8 帧 × 120 ms(约 1 秒),待机循环使用 4–6 帧 × 100–150 ms,行走循环使用 6–8 帧。
-
持续时间。 使用
add_frames(count, duration_ms),然后使用set_frame_duration_all。 -
标签。 使用
set_tag为每个循环命名(例如idle或walk),以便export_tag可以单独导出该循环。
2. 先完成静态层
先完成静止帧;遵循像素艺术技能。然后调用 propagate_cels 将所有不移动的图层(背景、家具)复制到所有帧。之后只对移动层进行重绘。
3. 以正确的方式移动物体
| 什么在移动 | 如何操作 |
|---|---|
| 角色、生物 | 姿势到姿势。在每个关键帧上重新绘制每个关键姿势:预备动作、动作、跟随动作。使用 copy_frame,然后使用 erase_region 擦除移动部分,并使用 draw_rows 重新绘制。涉及整个身体。除非在空中,否则脚要保持在同一条地平线上。 |
| 软体(史莱姆、果冻) | 挤压和拉伸 30–50%,在每个空中帧上改变形状。 |
| 刚性物体、次要运动 | 使用 tween_cel_positions_eased、offset_cel_positions 或 oscillate_cel_positions(云朵、浮动图标、摇摆的船)。 |
| 旋转部件(风扇、风车) | 绘制 2–4 个姿势,并使用 copy_cel 交替显示。 |
| 环境效果(蒸汽、火花、屏幕内容、闪烁的 LED) | 每帧重新绘制一小部分像素。随着粒子的上升,让 Alpha 衰减。 |
切勿将补间用于活物的主要运动。
4. 使循环无缝
- 最后一帧必须能流畅地接回第一帧。 对于粒子,使用
(frame + offset) % N的位置。对于滚动,在循环周期内移动恰好一个周期。 - 避免回跳。 某物漂移 8 像素然后跳回会被视为一个故障。使用来回摇摆,或者让它移动整个画布宽度从而离开并重新进入。
- 使用
render_onion_skin检查连续性。 使用compare_frames和get_bounds确认移动了哪些内容以及移动了多少。
5. 审查和导出
- 审查。 调用
view_sprite(frames="1-8")并排查看每一帧,并调用audit_animation或validate_scene查找缺失的 cel。 - 导出。
export_animation(output.gif, scale=4-8, background="#...")生成可共享的 GIF;使用export_tag导出单个循环。 - 在实时模式下,用户还可以在 Aseprite 中按 Enter 键播放动画。