学习空间/以后再做二周目横版 ACT:移动、攻击窗口与状态边界

以后再做二周目横版 ACT:移动、攻击窗口与状态边界

用一个平台和一个木桩验证动作手感,不把探索角色脚本直接堆成战斗系统。

后续专题约 5 分钟阅读,实作另计6 节以后学
CONCEPT MAP先看一眼知识之间的联系
先看一眼知识之间的联系01输入请求02检查当前状态03前摇04有效段:单次命中05后摇 / 打断清理
动作可靠性来自明确窗口与退出边界,而非动画数量。

01前置:先确认玩法成本,再做独立试验

横版 ACT 若进入后续计划,会带来重力、跳跃、攻击、受击、敌人反馈和动作资源的新工作。本课只给独立教学试验,不表示二周目内容已经定案。新建一小块平台、一个角色色块和一个不会移动的木桩,不要立刻制作整章战斗关卡。

探索 RPG 的俯视移动与横版落地判断不同,不能只给原脚本加一个攻击键就期待全部适配。先说明这次要验证的体验,例如“玩家能看懂何时打中,并在失败后知道为什么”,比先定十种武器更有用。

02第一步:只做走、停、跳与落地

练习角色用 CharacterBody2D,子节点放视觉节点与 CollisionShape2D;地面用带碰撞形状的静态物体。横版采用有地面概念的运动模式,分别处理水平速度、重力累积与跳跃起速;物理移动集中在固定更新中,避免几个脚本同时改位置。

Godot 的 is_on_floor 反映最近一次 move_and_slide 的碰撞结果,不是任意时刻自动实时查询地面。先测边缘起跳、撞顶、落地和反向移动,记下预期。更宽容的跳跃缓冲与离地宽限属于后续手感选项,先把基础规则跑稳。

03第二步:把一次攻击拆成三个窗口

前摇表示动作已经开始但尚不能造成伤害;有效段开启攻击判定;后摇决定何时恢复其他动作。用秒或与明确动画时间线绑定的数据表示窗口,不把渲染了多少帧直接当真实时间。练习可先用三种颜色显示窗口,暂时不需要最终角色动画。

攻击判定盒回答“这一击能碰到谁”,受击判定盒回答“谁可以被打中”,身体碰撞负责站地与阻挡,它们不是同一个用途。每次攻击维护已经命中的目标集合,避免有效段持续重叠时每个物理步都对木桩重复扣血。

04第三步:明确状态进入、打断与退出

先设移动、攻击、受击、死亡四种状态,再写允许的转移:攻击中是否能转身、受击能否打断前摇、死亡是否终止伤害判定。答案是设计规则,不是状态机名称自动带来的能力。一次变化应有一个明确的控制者,避免动画回调与计时器互相抢状态。

退出攻击时,无论正常结束还是被打断,都清理判定、待执行回调和本次动作标记。重生要恢复完整初始条件,不能只把角色画面重新显示。为每条转移写清保留与清除的数据,才能排查“偶尔还能打人”的幽灵判定。

05第四步:用木桩反馈校对画面与规则

让木桩显示生命值和最近一次攻击编号,角色同时显示当前状态与窗口。慢速观察武器画面、判定盒和扣血时刻是否相符;玩家看到挥空却扣血,会感觉规则不可信。打击音、闪色和轻微停顿可以之后逐层加入,不要用震动掩盖错误判定。

若加入短暂停顿,明确它影响动作、物理、界面与音频中的哪些部分。不要盲目修改全局时间就假定所有计时器都一致。先用调试显示定位错误,再调整手感参数;本课没有提供或声称已运行完整 ACT 代码。

06练习与验收:先通过边界,再增加招式

测试空挥、命中一次、有效段持续重叠、攻击中被打断、攻击中死亡、重生后首次攻击、快速连按和切出窗口。预期同一击对同一木桩只结算一次,死亡后判定关闭,重新开始没有旧回调突然执行。

把攻击窗口画成简单时间条,并让另一位试玩者描述何时能行动。通过后才考虑第二个敌人或第二种攻击;如果一个木桩都无法稳定解释结果,更多内容只会扩大排错范围。是否纳入二周目,应结合实测制作成本与主游戏目标再决定。

动手后,再勾选

不是“我看懂了”,而是你在独立练习里做出并检查过。

CHECK YOUR UNDERSTANDING

换一个情景,你会怎么判断?

角色在攻击有效段被击败,最关键的退出处理是什么?

用自己的话,留一条笔记

可以写“我之前以为……,现在发现……”,或者记录还没解决的问题。

仅保存在此浏览器0 / 20000

回到资料核对

本课是解释与练习,不替代对应版本的官方手册。网页实验不运行 Godot;未标明实机验证的代码,仍需在独立工程中检查。

把这课收进你的理解里。

标记已读不会自动勾选实作,也不代表游戏功能已经完成。

输入一个你想弄明白的问题。

按 Esc 关闭 · 标题、关键词和正文一起搜索