第 6 部分:添加敌人
简介
现在,你已经在游戏中加入了可收集的金币,接下来就该添加一些障碍,为玩家带来挑战了。
本指南的这一部分建立在第 5 部分的基础上。该部分假设你已经有一个可操控的角色、可收集的金币,并且基本了解如何向场景添加对象、行为系统以及碰撞。
你的第一个敌人
在资源库中,找到你在上一步下载的“Platformer Starter Pack”,然后选择 Pink Slime,并将“Move”动画添加到停靠栏。
将 Pink Slime 添加到停靠栏后,把它拖出停靠栏并放到场景中。
轻点刚添加到场景中的史莱姆,打开对象属性,然后将其设为物理对象。
接下来,在对象属性中轻点碰撞图标,打开碰撞编辑器。我们需要稍微缩小它的碰撞框,避免玩家过早受到攻击。用手指将两侧的绿色圆点向史莱姆移近,然后轻点绿色勾号按钮以应用更改。
现在,我们需要让敌人沿着一条路线巡逻。为此,请打开史莱姆的行为。从“对象”类别中添加“巡逻”行为。
然后,在行为属性中设置史莱姆移动的距离,以及它到达目标位置所需的时间。
在“移动”部分中,X 值表示敌人沿 X 轴(向左或向右)移动的距离。负数表示向左移动,正数表示向右移动。
我们暂时保留默认值(-6)。不过,你可以根据场景以及希望敌人移动的距离进行调整。
为了减慢敌人的速度,我们将持续时间改为 2 秒。这表示它需要 2 秒移动 -6 米。
消灭敌人
要消灭敌人,我们将在 hyperPad 中使用标签系统。标签可以让你引用多个对象,而不必为每个对象单独添加行为。在这里,标签的作用是:我们只需为一个敌人添加行为,之后任何带有相同标签的新敌人也会自动应用这些行为。你可以在这里了解更多关于标签的信息:对象标签和将行为应用于带标签的对象。
首先,为 Pink Slime 添加标签。退出行为编辑器,返回主编辑器,然后选择 Pink Slime,查看对象属性。
在对象属性底部选择“标签”选项卡(底部最右侧的选项卡)。
要添加标签,请在顶部的搜索框中输入名称。请确保选择容易记住的标签。本教程中,我们只需使用“Enemy”标签。然后轻点 + 按钮添加标签。
现在可以开始添加行为了。这次请选择玩家角色,不要选择敌人。然后打开玩家角色的行为。
从“对象”类别中添加“碰撞”行为,然后选择它以查看行为属性。
在碰撞行为属性中,关闭除“在上方”之外的所有开关。这样,只有当玩家碰到敌人顶部时,碰撞行为才会触发事件。
接下来,在行为属性底部切换到“标签”选项卡,然后选择之前添加的 Enemy 标签。标签旁边出现绿色圆点,表示该标签已选中并启用。这样一来,触碰特定敌人时不会触发事件;只有当玩家碰到任何带有 Enemy 标签的对象顶部时,才会触发事件。
接下来,从“对象”类别中添加“禁用对象”行为,并将它连接到碰撞行为。这样就能阻止敌人继续巡逻和互动。
再次将其设置为仅影响 Enemy 标签。由于碰撞行为和“禁用对象”行为使用的是同一个标签,因此只有发生碰撞的那个对象会被禁用,而不是所有带有相同标签的对象。
接下来,为了让游戏更加精致,我们要让敌人在被踩到时呈现不同的样子。从“特效”类别中添加“播放动画”行为,并将它连接到“禁用对象”行为。
然后轻点“选择动画”区域。在资源库中找到 Pink Slime,并选择“Hit”动画。
再次将此行为设置为只影响带有 Enemy 标签的对象。
接下来添加一个“等待”行为,并将它连接到“禁用对象”行为(位于“播放动画”旁边),然后将等待时间设为很短的时长,例如 0.25 秒。
最后,从“对象”类别中添加“销毁对象”行为,并将它连接到之前添加的“等待”行为。然后再次将其设置为 Enemy 标签。(请注意,下图中的“禁用对象”已重命名为“8”。)
这样就完成了!现在,你已经可以消灭敌人了。
增加挑战
现在,我们要让敌人能够消灭玩家并结束游戏。
保持在玩家的行为界面中,再添加一个新的碰撞行为。这次,在碰撞行为属性中只关闭“在上方”开关。并且再次确认已选中 Enemy 标签。
接下来,添加一个“销毁对象”行为,并将它连接到碰撞行为。由于你当前正在编辑玩家的行为,它会自动设置为销毁玩家。
最后,从“场景”类别中添加“加载叠加层”行为,并将它连接到之前添加的“销毁对象”行为。
叠加层类似一个特殊场景,可以显示在当前场景之上。它通常用于菜单、暂停画面或游戏结束画面。hyperPad 已经内置了 2 个创建好的叠加层:一个用于暂停菜单,另一个用于游戏结束画面。你可以通过项目菜单根据需要修改它们。若想了解更多关于场景和叠加层的信息,可以在手册中搜索相关主题。
在“加载叠加层”行为属性中,轻点“选择叠加层”。然后从出现的列表中选择 hyperPad 提供的“Game Over”叠加层。
这样就完成了!现在,当玩家撞上敌人时,玩家会消失,并显示游戏结束画面,让你可以重新开始当前场景。
此时,你可以在关卡中添加更多敌人。只需确保为它们添加 Enemy 标签。

