教程:从零开始的ACTION GAME MAKER 第三章

调整“攻击判定”和“碰撞判定”。

调整过大的 HitCollision 尺寸。此外,由于本次风格不需要主体的攻击判定,可以大胆将其删除。(如果使用近战攻击则需保留,但本次不制作近战攻击。)

  1. 选择 HitCollision。

  2. 拖动四角,将其调整为比墙壁判定稍大一点的程度。

  1. 右键点击 AttackArea2D。

  2. 在菜单底部找到“删除”选项并执行“删除”。

  1. 当弹出“是否删除 AttackArea2D 及其子节点?”的窗口时,点击“确定”,即可删除 AttackArea2D 及其子节点 AttackCollision。

创建“受击”脚本

当“受到敌人攻击”时,应转移到“受击”状态。在“受击”状态下,角色应暂时无法移动,并向后移动(即与显示方向相反的方向)。问题在于应从哪个状态进行转移。Player 已有 7 个状态,若要将所有状态都链接起来会非常繁琐。此时可以使用“AnyState”框。

什么是“AnyState”?

顾名思义,AnyState 代表“所有”状态。从该状态出发的链接,无论原始状态为何,只要满足条件即可进行转移。此外,通过执行专用的执行动作“返回上一状态”,可以忽略链接直接返回到转移前的状态。

像本次的“受击”这类动作,使用 AnyState 是最合适的。

创建“受击”状态

在“受击”状态中,应设置为“无法移动”、“向后(与显示方向相反)移动”、“经过一定时间后”、“返回上一状态”。

  1. 在 AnyState 右侧的空间右键点击,选择“添加状态”。
  2. 将创建的状态 001 重命名为“受击”。
  3. 在动画类别名称中指定“受击”。
  4. 展开检查器中的“动作设置”。
  5. 开启“不接受移动中的移动输入”和“不接受移动中的显示方向变更”。这样,在受击反应期间将无法移动,显示方向也不会改变。
  6. 选择“+添加执行动作”。
  7. 选择“向显示方向移动”。
  8. 启用选项“向反方向移动”,然后点击“添加”。
  9. 再次选择“+添加执行动作”。
  10. 这次选择“添加等待”动作。
  11. 将“数值”选项设置为 0.2 秒,然后点击“添加”。由于无法使用全角字符正确输入,请使用半角字符输入 0.2。这样,在下一个执行动作之前会有 0.2 秒的等待,即“向显示方向相反方向移动”将持续 0.2 秒。
  12. 再次选择“+添加执行动作”。
  13. 最后选择“返回上一状态”动作并点击“添加”。
  14. 如果执行动作按如下顺序排列,则设置完成。

用链接连接“AnyState”和“受击”

从 AnyState 出发的链接也可以像普通链接一样创建。

  1. 右键点击 AnyState,选择“添加链接”。
  2. 将其连接到“受击”状态。
  3. 在检查器中点击“+添加其他条件”。
  4. 选择“接触物体攻击判定”动作。
  5. 勾选“检查所有方向”并添加。
  6. 这样,无论从哪个方向受到攻击,都会转移到“受击”状态。

进行测试游玩

请进行测试游玩,确认是否能正确执行受击反应,并与敌人碰撞。如果设置正确,当与敌人碰撞时,角色将无法操作,闪烁并向后移动一小段距离。

无法正常工作时的检查清单

不闪烁:请重新检查 BaseSettings 中的无敌设置

未发生受击反应:请检查链接条件。

发生了反应但动作异常:请检查受击状态的内容。

第三章回顾

那么,本次我们完成了以下学习:

  • 通过创建各种类型的游戏对象,进行对象制作的反复练习
  • 碰撞层与碰撞掩码的概念
  • 受到伤害与无敌状态
  • AnyState 的处理方法

但是,虽然已经实现了攻击和伤害的处理,但画面狭窄,没有声音,也不会出现游戏结束。

这还不能称之为游戏,因此在第四章中,我们将使其能够作为游戏正常运行。