教程:脚本课程 #2 – 让我们创建一个敌人

步骤 2:创建敌人(僵尸)的脚本


  1. 点击 :scroll: + 图标以创建新的可视化脚本
  2. 将第一个状态重命名为 Walk,并将动画设置为僵尸的行走动画:E_01_act_003
    同时,将朝向方向设置为,因为默认方向是右。

  1. 对于 Walk 的可执行操作,添加 TemplateMove
    将模板类型保持为水平,但禁用自动翻转,这样僵尸仅在撞墙时才会转身,而不是基于时间。

  1. 让我们在游戏中测试一下。将 sample_zombie.tscn 作为 BaseLayer 的子节点放置。
  2. F5 或点击 :play_button: 进行测试。
    僵尸应该向左行走,并在被子弹击中时消失。如果不起作用,请检查以下内容:
  • 僵尸移动方向错误:确保在 BaseSettings 中启用了“启用自动水平翻转”,并且 Walk 状态的方向设置为左。
  • 子弹击中僵尸后未消失:检查子弹的脚本,确保碰撞检测正常工作。
  • 僵尸在受到攻击后未死亡预期行为,因为我们尚未添加死亡状态。

  1. 现在让我们创建受伤状态。
    在 AnyState 附近创建一个名为 Damaged 的新状态。
    将动画设置为 E_01_act_008(受伤动画)。

  1. 在操作设置中,将水平移动速度降低至10%
    这会使僵尸在受伤动画期间减速。

  1. 添加三个操作
  2. 播放音频:使用 Zombie2 作为音效。
  3. 等待:插入 0.2 秒 的等待时间,以便动画播放。
  4. 转移到上一个操作:返回到之前的状态。

  1. 连接 AnyState → Damaged
    AnyState 允许从任何状态进行转换,“转移到上一个操作”则返回到之前的状态——对于 RPG Maker 用户来说,这就像“公共事件”。

  1. 为该链接添加两个条件
  2. 接触攻击区域
    配置为当被 Player任何方向击中时做出反应。
  3. HP ≠ 0

  1. 测试一下。僵尸在受到攻击时应发出呻吟并踉跄,且在受到 5 次攻击后停止反应。

如果不起作用:

  • 对攻击无反应:检查 HP 条件是否已反向,并且动画是否正确设置。
  • 在 5 次攻击后仍会反应:确保逻辑条件为 AND

  1. 现在让我们创建死亡状态:

  1. Dead 添加三个操作
  2. 更改对象属性
  • 类型:对象属性
  • 目标:自身
  • 节点:AttackCollision:warning: 不是 AttackArea2D
  • 属性:disabled
  • 值:开启
    → 禁用碰撞箱,防止玩家从尸体受到伤害。
  1. 等待0.85 秒,以便动画播放。
  2. 移除自身
    → 从游戏中删除僵尸。

  1. 连接 AnyState → Dead,并将条件设置为 HP = 0(这次不要反向条件)。

  1. 再次测试。僵尸应发出呻吟并踉跄最多 5 次,在第 5 次攻击时播放死亡动画并消失。

如果有任何不符合预期的地方,请仔细检查链接、状态和条件。


下一个教程(第 3 部分)

2 个赞