教程:脚本课程 #3 – 创建剑攻击

在本课程中,您将学习 ACTION GAME MAKER 中的基础脚本技术。
第 3 部分 中,我们将创建一个剑攻击。


开始之前

我们将继续使用本教程系列 第 1 部分第 2 部分 中的项目。
请在继续之前打开该项目并做好准备。

步骤 1:添加一把剑

  1. 打开 Object_Sampleplayer
  2. 由于玩家当前手持一把枪,我们先将其隐藏。点击 W005 Gun 旁的 :eye: 图标使其不可见。
  3. 接下来,让玩家装备一把剑。检查 FileSystem。与枪类似,在 templates > objects > weapons > P_other 下可以找到多把剑的图像。
  4. 将您喜欢的剑作为 B_Weapon 的子对象添加。这里我们使用 W_001_sword.png
  5. 调整其位置和旋转角度,因为当前的角度不正确。设置 x: 17y: -16Rotation: 48 以获得更好的贴合效果。
  6. 使用 AnimationPlayer 检查动画。播放 033_Swing。如果感觉不对,请微调 W001Sword 的属性。
  7. 让我们为剑添加一个攻击判定框。该对象已有 AttackArea,但目前位于玩家的脚下。将 AttackArea2D 移动为 B_Weapon 的子对象。
  8. 调整 AttackArea2D 的位置以匹配剑。一个合适的设置可能是 x: 13y: -11Rotation: -42
  9. 现在调整 AttackCollision 的大小和位置。由于位置和旋转角度可能不正确,请将它们都重置为 0。此外,默认的判定框看起来有点短,让我们将其形状拉得更长一些。注意:调整形状可能会自动更改 x 坐标。
  10. 再次播放 Swing 动画。此时判定框应随剑一起移动。

说明:

精灵角色的攻击判定框
对于使用精灵图(sprite sheets)创建的角色,建议根据动画调整攻击判定框的大小和位置
在 Inspector(检查器)中,展开 CollisionShape2DShape 属性。
您可以设置关键帧,将形状大小和位置的变化作为攻击动作的一部分进行动画处理。

步骤 2:剑攻击的视觉脚本

  1. 打开视觉脚本
  2. 创建一个名为 Sword 的新状态,并将动画设置为 Swing
  3. 添加一个动作以设置攻击属性,并配置为仅击中 Enemy 组中的对象。
  4. Idle 连接到 Sword,并将条件设置为当按下 Y 键时触发(键盘上为 V 键)。
  5. 选中从 IdleSword 的连接,按 Ctrl+C 或右键选择复制
  6. 选择 Move,然后按 Ctrl+V 或右键选择粘贴链接,将其连接到 Sword。这样可以在移动时进行剑攻击。
  7. 最后,创建一个从 Sword 返回 Idle 的快捷链接,并将条件设置为当动画结束时

现在,近战剑攻击应该可以正常工作了。测试一下——如果设置正确,按下 Y 键(键盘上为 V 键)应能让玩家用剑挥砍并击败僵尸。

不过,你可能会注意到一些问题:

  • 剑始终可见,甚至在射击时枪也不会出现。→ 你需要一种在剑和枪之间切换的方法。
  • 即使你没有攻击,僵尸也会在碰到剑时受到伤害。→ 这是因为剑的碰撞盒始终处于激活状态

在下一步中,我们将解决这些问题。

1 个赞

步骤 3:优化视觉脚本

  1. 选择 Idle 状态并添加三个动作
    第一个是 ChangeObjectProperty
    将其设置为关闭 W005Gun 节点的 Visible 属性
  2. 第二个也是 ChangeObjectProperty
    将其设置为关闭 W001Sword 节点的 Visible 属性
  3. 第三个同样是 ChangeObjectProperty
    将其设置为开启 AttackCollision 节点的 Disabled 属性
    这将禁用剑的碰撞盒。
  4. 现在尝试测试运行。
    剑和枪都应该是隐藏的,并且僵尸不会因为身体接触而受到伤害。
    然而,由于它们保持隐藏状态,我们现在需要适当地启用它们
  5. Sword 状态中,反转设置
    添加两个动作:
    首先,使用 ChangeObjectProperty 开启 W001SwordVisible 属性。
  6. 然后,使用 ChangeObjectProperty 关闭 AttackCollisionDisabled 属性。
    这将在攻击期间重新启用剑的碰撞盒。
  7. 再次测试您的游戏。
    如果设置正确,剑将仅在挥剑攻击时出现
  8. 现在我们来设置枪。
    Shoot 状态中,添加一个动作:
  9. ChangeObjectProperty 开启 W005GunVisible 属性。
  10. 再次测试。
    枪现在应该仅在射击时出现

提示:使用动画切换属性

在本课程中,我们使用 ChangeObjectProperty 动作 来切换精灵的可见性。
不过,您也可以通过动画来控制 VisibleDisabled 等属性,将它们设置为关键帧

但请注意:
如果动画在到达关键帧之前被中断,更改可能无法正确生效
例如,某些动画如 026_Crouch 就使用此技术通过动画多边形切换面部表情。

有关 AnimationPlayer 的更多信息,请参阅图形课程


:blue_book: 下一课程:第 4 部分