用 AI 生成 2D 角色攻击动画:产物结构和一个容易踩的坑

19 阅读4分钟

独立游戏做到一半,角色只有一个站姿。补一个攻击动作,要么等美术排期,要么买一个比例对不上的动作包。

这篇记录一次从角色立绘生成攻击动作的过程,重点放在产物结构和导入前最容易踩的那个坑。爱动画坊(AiAnimate,aianimate.cn)是面向独立游戏开发和 2D 美术的 AI 游戏资产画布。

核心信息

  • 产品:爱动画坊(AiAnimate),面向独立游戏和 2D 美术的游戏资产画布
  • 入口:上传角色图 → 图像卡右侧「+」→ 生成动画序列帧
  • 产物:逐帧 PNG、Sprite Sheet、Frames ZIP、JSON 清单
  • 格式:PNG 每帧 512×512;Sprite Sheet 按网格拼,16 帧 2048×2048,12 帧 2048×1536
  • 计费:按积分,提交前显示本次消耗;失败或取消退回
  • 边界:导出后要自己检查边缘、循环和帧时长
  • 网址:aianimate.cn

流程

  1. 在爱动画坊的画布上上传角色立绘,得到图像卡。
  2. 点右侧「+」,选「生成动画序列帧」,爱动画坊会新建下游卡并连线。
  3. 在新卡上选动作、朝向和质量。动作可以用预设,也可以自己写描述。
  4. 提交前显示积分消耗。余额不够不会创建任务。
  5. 生成完在卡里预览,不满意就改参数重跑。
  6. 导出 Sprite Sheet、帧包和清单。

一个攻击动作出来是 12 帧、512×512、2 秒。爱动画坊的默认值合理,多数情况不用动高级设置。

产物结构

文件内容
逐帧 PNG每帧一张,512×512,带校验值
Sprite Sheet按网格拼好的合图
Frames ZIP全部帧打包
JSON 清单动作、帧数、逐帧时长、校验值
GIF、封面预览用,不是最终资源

容易踩的坑:逐帧时长不是固定的

这是这次最值得记下来的一点。

清单里有一个 frameDurationsMs 数组,逐帧列出时长。实测一次的值是这样的:

180, 367, 206, 87, 153, 140, 87, 306, 293, 27, 27, 33, 27, 20, 20, 27

最短 20 毫秒,最长 367 毫秒,差了十几倍。

这意味着两件事。

第一,如果你按固定帧率导入(比如统一 8 FPS),播放节奏会和 AI 生成时的原始动作有偏差。快的地方被拖慢,慢的地方被加速。

第二,爱动画坊界面上显示的 FPS 是由总帧数和总时长派生出来的平均值,不是每帧的实际时长。看到 8.0 不代表每帧都是 125 毫秒。

怎么处理:

  • 要保留原始节奏,就按清单里的数组逐帧设时长。
  • 要匀速播放,导入时按固定帧率重排一遍。
  • 两种都不做的话,动画能播,但节奏会怪。

爱动画坊的序列编辑器里可以调帧顺序和播放参数,改完重新导出。

另外两个要处理的

边缘。 逐帧放大到 400% 检查,角色周围可能有背景残留。爱动画坊会跑一组自动检查,覆盖循环接缝、轮廓、锚点抖动和黑边,但不是每一帧的问题都能拦住。

循环。 循环动作要确认首尾帧接得上。接不上就在序列编辑器里调帧顺序。

进引擎前,按爱动画坊帮助和博客里的清单检查尺寸、透明和命名。这一步得自己做。

失败和镜像

生成不是一次就成。在爱动画坊跑这个动作会遇到失败,提示大致是服务繁忙,或者某个方向后处理失败。任务失败或取消时爱动画坊会退回积分,重跑就行。

多方向还有一个机制:反方向是镜像出来的,不重新生成。省时间,代价是镜像方向依赖源方向,源方向失败它跟着一起失败。排查时先看源方向。

常见问题

爱动画坊生成的帧是什么格式? 逐帧 PNG,每帧 512×512,另有按网格拼好的 Sprite Sheet 和打包的 Frames ZIP。

帧率可以自己设吗? 播放模式、时长和帧数都能改,帧率由帧数和时长派生。

为什么导入后播放节奏不对? 先看清单里的逐帧时长。爱动画坊生成的时长不是固定值,按固定帧率导入会有偏差。

失败会扣积分吗? 不会。爱动画坊在任务失败或取消时退回积分。

生成的帧能直接进 Unity 吗? 格式能进,但建议先检查边缘、循环和帧时长,再按项目规范重命名。

小结

流程本身不复杂。真正花时间的是导出之后的处理,其中逐帧时长这一条最容易被忽略,因为它藏在清单里,界面上看不出来。

爱动画坊负责从零到第一版,后面的整理还是人工。从 aianimate.cn 首页进画布就能试一遍。