在本课程中,您将学习 ACTION GAME MAKER 中的基本脚本方法。
在 第 2 部分 中,我们将创建一个 敌人 角色。
课程开始前的准备
我们将继续使用 第 1 部分 中的 同一个项目。
请打开项目并准备好开始。
步骤 1:设置基础敌人(僵尸)配置
- 我们将使用 模板对象 中的 僵尸 作为敌人。
打开新标签页,选择 游戏对象,并按以下方式配置设置:
- 名称:您喜欢的任何名称(此处我们使用
Sample_Zombie)。
- 模板:
characters
- 类型:
Enemy_Zombie
- 组:
Enemy
创建完成后,按 Ctrl+S 保存场景。
- 设置 基础设置。
打开 BaseSettings 部分,并配置以下内容:
在可视化脚本中,系统默认对象朝右。然而,此对象设计为朝左,因此必须启用水平翻转。
- 启用对象条件:
CLOSE TO CAMERA(靠近摄像机)
对象在摄像机视野外时将保持禁用状态。
1 点 HP 太低,因此我们将其设置为 5。
这是受到攻击后的无敌持续时间。1 秒对于快节奏的攻击来说太长了,因此我们将其设置为 0.2 秒。
- 通常,您需要手动设置碰撞检测和动画,但此 模板对象已包含所有内容,因此无需进行额外的基础配置。
说明
关于无敌持续时间
无敌持续时间非常重要。
如果未设置,只要攻击判定框与敌人重叠,敌人就会持续受到伤害,导致瞬间被击败。
另一方面,如果时间过长,像机枪这样的快速射击攻击可能无法造成连续伤害。
请根据您的项目需求调整此设置。
2 个赞
步骤 2:创建敌人(僵尸)的脚本
- 点击
+ 图标以创建新的可视化脚本。
- 将第一个状态重命名为 Walk,并将动画设置为僵尸的行走动画:
E_01_act_003。
同时,将朝向方向设置为左,因为默认方向是右。
- 对于 Walk 的可执行操作,添加
TemplateMove。
将模板类型保持为水平,但禁用自动翻转,这样僵尸仅在撞墙时才会转身,而不是基于时间。
- 让我们在游戏中测试一下。将
sample_zombie.tscn 作为 BaseLayer 的子节点放置。
- 按 F5 或点击
进行测试。
僵尸应该向左行走,并在被子弹击中时消失。如果不起作用,请检查以下内容:
- 僵尸移动方向错误:确保在 BaseSettings 中启用了“启用自动水平翻转”,并且 Walk 状态的方向设置为左。
- 子弹击中僵尸后未消失:检查子弹的脚本,确保碰撞检测正常工作。
- 僵尸在受到攻击后未死亡是预期行为,因为我们尚未添加死亡状态。
- 现在让我们创建受伤状态。
在 AnyState 附近创建一个名为 Damaged 的新状态。
将动画设置为 E_01_act_008(受伤动画)。
- 在操作设置中,将水平移动速度降低至10%。
这会使僵尸在受伤动画期间减速。
- 添加三个操作:
- 播放音频:使用
Zombie2 作为音效。
- 等待:插入
0.2 秒 的等待时间,以便动画播放。
- 转移到上一个操作:返回到之前的状态。
- 连接 AnyState → Damaged。
AnyState 允许从任何状态进行转换,“转移到上一个操作”则返回到之前的状态——对于 RPG Maker 用户来说,这就像“公共事件”。
- 为该链接添加两个条件:
- 接触攻击区域
配置为当被 Player 从任何方向击中时做出反应。
- HP ≠ 0
- 目标:此节点
- 反向条件:开启(即:HP ≠ 0)
- 逻辑链接:AND
- 测试一下。僵尸在受到攻击时应发出呻吟并踉跄,且在受到 5 次攻击后停止反应。
如果不起作用:
- 对攻击无反应:检查 HP 条件是否已反向,并且动画是否正确设置。
- 在 5 次攻击后仍会反应:确保逻辑条件为 AND。
- 现在让我们创建死亡状态:
- 将状态命名为
Dead,并设置动画为 E_01_act_009(死亡动画)。
- 将水平移动速度设置为
0% 以停止移动。
- 为
Dead 添加三个操作:
- 更改对象属性
- 类型:对象属性
- 目标:自身
- 节点:
AttackCollision(
不是 AttackArea2D)
- 属性:
disabled
- 值:开启
→ 禁用碰撞箱,防止玩家从尸体受到伤害。
- 等待:
0.85 秒,以便动画播放。
- 移除自身
→ 从游戏中删除僵尸。
- 连接 AnyState → Dead,并将条件设置为 HP = 0(这次不要反向条件)。
- 再次测试。僵尸应发出呻吟并踉跄最多 5 次,在第 5 次攻击时播放死亡动画并消失。
如果有任何不符合预期的地方,请仔细检查链接、状态和条件。
下一个教程(第 3 部分):
2 个赞