
本文目录
按住方向键让角色跑起来,松手停下,出一拳,再继续移动。把动画接到操作上之后,动作切换时的大小变化、脚底位置和收招时机就更容易看出来了。
上一期,我们从同一段视频里拆出了橙色机器人的直拳和前踢。这次沿用同一张角色图,补上格斗待机与原地跑动,把四段透明动画接进一个小场景,全部保持 24 FPS。
也可以直接打开浏览器操作演示:方向键或 A/D 移动,J 出拳,K 踢腿;手机上按住方向按钮。页面默认暂停,点击开始或操作按钮后播放。
四个动作共用一张角色图
这次继续使用橙色机器人原图,保留同样的护甲颜色、头身比例和面向右的视角。每个动作都从这张图开始,减少重新绘制角色带来的外观变化。
构图也沿用前篇设置:4:3 画布,Expand Canvas 缩放 80%,位置 X 为 0.35、Y 为 0.5,给右侧拳脚留出空间。如何为大动作安排留白,可以看 Expand Canvas 案例。
向左移动时,演示把整套图片水平镜像。这个机器人没有文字或单侧武器,用同一套素材转身比较方便。如果角色拿着盾牌,或衣服上有字,就要检查镜像是否符合设计。
分别生成安静的待机和原地跑动
待机提示词要求双脚站定、拳头维持准备姿势,胸口和肩膀只有轻微起伏。这样松开方向键后,角色能安静地停下来,不会马上踏步或做出另一个大动作。
跑动提示词则要求面向右、在原地连续跑动,镜头与角色尺度保持固定。场景中的横向位置交给代码控制,素材本身保留摆臂、抬腿和身体起伏。
两条请求都使用 Seedance 2.0 Fast、4 秒、480p、4:3 和 Alpha Key。本次实际每条扣费 36 积分,共 72 积分;透明 PNG 序列与 ProRes 4444 导出均为 0 积分。直拳和前踢复用前篇的 720p 素材,没有再次生成。积分是 2026-10-03 的实际记录,后续以生成前报价为准。
可以下载实际使用的待机提示词和跑动提示词,以及带键色背景的待机原片和跑动原片。两条原片实际都是 752 × 560、97 帧、24 FPS,约 4.04 秒;请求档位、返回尺寸和运行时画布分别对应不同环节。
待机和跑动选循环,攻击保留完整起落
四秒原片足够挑出一段呼吸或步态周期。我们先连续播放几个周期,再检查末尾接回开头时的姿势,保留下面这些连续帧。表里的源帧编号从 0 开始,包含首尾两帧。
| 动作 | 源帧范围 | 保留帧数 | 24 FPS 时长 | 播放方式 |
|---|---|---|---|---|
| 待机 | 22–56 | 35 | 约 1.46 秒 | 循环 |
| 跑动 | 44–59 | 16 | 约 0.67 秒 | 循环 |
| 直拳 | 9–44 | 36 | 1.50 秒 | 单次 |
| 前踢 | 58–88 | 31 | 约 1.29 秒 | 单次 |
跑动保留完整步态,再从第 59 帧回到第 44 帧。没有把 16 帧降成 12 FPS,也没有额外生成过渡帧。循环选段的检查方式可以参考行走循环文章;直拳、前踢的起手与收招来自上一期的两个动作选段。
用统一画布和原点对齐四段动画
每段动画都放进 512 × 384 的透明画布,保持原始宽高比。新增的待机、跑动整帧先等比缩放到 512 × 381,再放进画布,避免把 752 × 560 硬拉成另一种比例。
检查站姿与落脚位置后,我们对待机整段固定平移了 X −2、Y +3 像素,跑动整段固定平移 X −24、Y +3 像素。直拳与前踢沿用原来的位置。四段共用左上角起算的原点 (224, 321),在场景中按 0.85 倍显示。
这些值属于本次机器人素材。换角色时,先对比各段的头顶、脚底和躯干位置,再决定需要怎样对齐。整段使用固定偏移可以保留跑步中的自然起伏;逐帧紧贴轮廓裁切,则可能让角色在切换和播放时跳动。画布与轴点文档解释了这两个设置的区别。
攻击播完后,再响应当前方向
小场景使用 idle、run、punch 和 kick 四个状态。没有攻击时,有方向输入就跑动,松开就待机;同时按住左右键则停下。
按下 J 或 K 后,控制器锁住横向位置和朝向,让攻击完整播放一次。期间的新攻击输入直接忽略。动画结束时重新读取方向:仍按着就继续跑,已经松开就回到待机。长按攻击键只触发一次,下一次需要松开再按。
Godot 示例通过 AnimatedSprite2D.animation_finished 处理收招。直拳与前踢关闭循环,待机与跑动开启循环;循环动画不会发出这个完成信号。Godot 官方文档
func _attack_finished() -> void:
if _attacking():
completed[state] += 1
_locomotion()
_locomotion() 会读取当前方向输入,再选择 run 或 idle。完整实现已经放进下载项目,无须自己拼接这段函数。这个场景先处理移动和动画切换,尚未加入敌人、命中检测或伤害计算。
在 Godot 中试手感,移动速度单独调
下载 Godot 示例项目,解压后在 Godot 4 导入 project.godot,按 F5 运行。项目从 character.json 读取四张透明精灵图及帧区域,创建 SpriteFrames,无需安装插件。本次在 macOS 的 Godot 4.7.2、Compatibility 渲染器中运行并录制了开头的视频。
移动速度默认 280 px/s,动画保持 24 FPS。这是可调整的演示速度,换角色或缩放比例后还需要再看脚掌着地时的滑动情况。网页速度滑块的范围为 60–600 px/s;Godot 项目可修改 assets/character.json 中的 defaultSpeed。调位移速度时先保持播放帧率,能更清楚地判断步态和移动是否合拍。
试着在跑动中出拳、攻击期间按相反方向、收招前松开所有按键。角色应完整做完攻击,再按当前输入行动。网页隐藏或窗口失焦时会清理按键并暂停,回来后不会继续沿用先前按住的方向。
下载素材,换成自己的角色
透明精灵图包包含四张 PNG、帧区域、播放帧率和选帧与对齐配方。按 JSON 中的帧数读取:图集末尾可能有空格,不要把空格加入播放序列。网页和 Godot 都使用透明图片;文内 MP4 为观看方便合成了背景。
这套多动作控制器与下载包是在真实导出素材上制作的教程示例。自己制作时,可以先按Godot 导入教程确认素材,再替换四个动作的精灵图与帧数据。尺寸、哈希、扣费和导出检查保存在素材记录。
把停止、转身和一次完整攻击试顺以后,再决定角色缺什么动作。需要补充动画时,回到 AnimGen 工作台,沿用确定好的角色图、镜头和画布留白。


