教程:脚本课程#3 尝试制作剑攻击。

在本课程中,您将学习在 ACTION GAME MAKER 中进行基本脚本制作的方法。
第三回将制作剑的攻击动作。

开始课程前的准备工作

我们将继续使用第一回和第二回中使用的工程文件。
现在请打开工程文件,做好准备。

步骤1:添加剑。

  1. 请打开 Object_Sampleplayer。
  2. 由于当前持有枪支,请先将其隐藏。点击 W005 Gun 的:eye:图标以隐藏它。
  3. 取而代之地添加一把剑。查看文件系统。与枪支一样,在 templates>objects>weapons>P_other 中有一些剑的素材。
  4. 将任意一把剑作为 B_Weapon 的子对象放置。这里我们使用 W_001_sword.png。
  5. 角度不太对,需要调整属性。将 x 设为 17,y 设为 -16,旋转 (Rotation) 设为 48 左右应该比较合适。
  6. 在 AnimationPlayer 中确认动作。尝试播放 033_Swing。如果感觉不自然,请在 W001Sword 的属性中进行微调。
  7. 为剑添加攻击判定。该对象已设置了 AttackArea,但它位于脚部,因此需要移动它。将 AttackArea2D 设为 B_Weapon 的子对象。
  8. 调整 AttackArea2D 的位置。将其移动到与剑匹配的位置。将 x 设为 13,y 设为 -11,旋转 (Rotation) 设为 -42 左右应该比较合适。
  9. 调整 AttackCollision 的大小和位置。由于 Position 和 Rotation 偏移了,请将其重置为 0。另外,攻击范围看起来有点窄,因此请稍微调整碰撞形状使其变长。此时,x 坐标会根据碰撞形状自动调整。
  10. 再次播放 Swing 动画。攻击范围应该会随剑一起移动。

说明

使用 Sprite 角色的攻击范围
对于使用精灵表(Sprite Sheet)的角色,建议根据动画变化攻击范围的位置和大小。
展开 CollisionShape2D 的 Shape 属性后,会显示用于修改形状大小的输入界面。通过将该界面作为关键帧插入,即可在动画中更改碰撞的大小。

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

  1. 打开视觉脚本。
  2. 创建新状态“Sword”,并将动画设置为“Swing”。
  3. 为“Sword”添加“Attack”动作,并设置攻击仅对敌人组生效。
  4. 从“Idle”连接到“Sword”,条件设置为按下Y键(键盘上为V键)。
  5. 保持选中从“Idle”到“Sword”的连接,按下Ctrl+C键,或在右键菜单中选择“复制”。
  6. 选择“Move”,按下Ctrl+V键,或在右键菜单中选择“粘贴链接”,并将其连接到“Sword”。这样即使在移动中也能进行剑攻击。
  7. 最后,从“Sword”连接到“Idle”的快捷方式,过渡条件设置为动画结束。
  8. 现在已实现近战攻击。请检查其功能。如果设置正确,应能通过控制器上的Y键或键盘上的V键进行剑攻击,并成功斩杀僵尸,但您可能会发现存在一些问题:
  • 剑始终处于持握状态,射击时枪械未出现:需要创建剑与枪的切换机制。
  • 即使未主动攻击,只要触碰到剑,僵尸也会受到伤害:这是因为剑的攻击判定持续存在。

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

步骤 3:改进视觉脚本

  1. 选择 Idle 状态,添加三个动作。第一个是“更改对象属性”(ChangeObjectProperty)。设置您自身节点的属性,将 W005Gun 的 Visible 设为关闭。
  2. 第二个也是“更改对象属性”(ChangeObjectProperty)。设置您自身节点的属性,将 W001Sword 的 Visible 设为关闭。
  3. 第三个同样是“更改对象属性”(ChangeObjectProperty)。设置您自身节点的属性,将 AttackCollision 的 Disabled 设为开启。
  4. 请进行测试运行。此时剑和枪应已消失,即使撞向僵尸,僵尸也不会受到伤害。但由于它们现在保持消失状态,接下来我们将启用显示。
  5. 在 Sword 状态中执行与上述相反的操作。添加两个动作。使用“更改对象属性”(ChangeObjectProperty),设置您自身节点的属性,将 W001Sword 的 Visible 设为开启。
  6. 使用“更改对象属性”(ChangeObjectProperty),设置您自身节点的属性,将 AttackCollision 的 Disabled 设为关闭。
  7. 请进行测试运行。如果设置正确,剑应仅在剑攻击期间显示。
  8. 接下来是枪。在 Shoot 状态中添加一个动作,同样使用“更改对象属性”(ChangeObjectProperty),设置您自身节点的属性,将 W005Gun 的 Visible 设为开启。
  9. 请进行测试运行。此时枪应仅在射击时显示。

提示

使用动画切换属性
在本课程中,我们使用“更改对象属性”动作来切换各个精灵的显示/隐藏状态,但此操作也可以通过 Animation 完成。
虽然可以将属性设置为关键帧,但请注意:只有在动画播放到该位置时才会执行切换。如果中途切换动画,可能导致显示/隐藏切换失败。
实际上,在 026_Crouch 等部分动画中,已使用动画来切换表情多边形。
关于 AnimationPlayer 的使用方法,请参考图形课程。

第四期请点击此处