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

“ACTION GAME MAKER”中的“攻击”与“受击”

攻击命中

您是否还记得玩家对象中的 HitArea2D/HitCollision 和 AttackArea2D/AttackCollision?

在“ACTION GAME MAKER”中,当 AttackArea2D 的 AttackCollision 与 HitArea2D 的 HitCollision 发生碰撞时,系统会自动执行伤害处理。

此外,借助 Godot 的 CollisionLayer(碰撞层)和 CollisionMask(碰撞掩码)功能,可以调整“是否发生碰撞”的行为。

CollisionLayer 与 CollisionMask

在前一部分的“墙壁判定”中已有所说明,在 Godot 中,碰撞行为可以通过 CollisionLayer 和 CollisionMask 功能进行控制。正如名称所示,这些功能为碰撞判定引入了“层级”概念。

您可以在如下设置面板中配置层级和掩码:

理解起来最直观的方式是:层级表示对象位于哪一层,掩码表示对象希望与哪些层级发生碰撞

例如,如果 AttackCollision 的掩码设置为 1 和 2,而 HitCollision 的层级仅设置为 3,则前者无法命中后者。利用这一机制,可以避免自身攻击判定误伤自身等情况。

伤害处理

当攻击命中时,系统会自动执行伤害处理。具体而言,会从防御方对象的 HP 中扣除攻击方对象在 BaseSetting 中设定的攻击力数值。

随后,通过在 BaseSettings 中设置“无敌”状态,可使对象在一定时间内免受伤害。