钥匙、门
接下来,我们来制作关卡 2,这关主要包括两个新机制:
- 贩卖机功能,靠近贩卖机按 [E] 使用;
- 道具功能(例如击败敌人获得钥匙,使用钥匙开门)
添加贩卖机
上一部分,我们制作了贩卖机界面。下面我们制作场景中的贩卖机物体,靠近后可按 [E] 使用贩卖机。
- 在“子弹”角色中,添加贩卖机的代码:
- 按 [E] 使用贩卖机
- 如果场上有敌人,[E] 使用贩卖机时,会提示附近有敌人在游荡,无法使用。
- 使用“发射子弹”的代码来在场景中放置贩卖机:
开始制作关卡 2
- 初始化时,关卡 2 的地图设为“基地”:
- 添加关卡 2 流程控制代码:
其中,这部分可以给放置的人物添加指令。“移动,45,40,跟随玩家”的指令,表示面向 45° 方向,移动距离 40,接着跟随玩家。这部分的具体代码这里不再介绍,可以参考本课源码。
- 击败门口的敌人后,摄像头聚焦到门口的贩卖机,并进行介绍:
(其中“闪烁单位”的广播,用于闪烁某个 ID 的子弹克隆体,具体实现代码这里略过)
如果玩家是第一次遇到贩卖机,可以详细介绍贩卖机;否则略过介绍:
添加闸门、闸门碰撞箱
接下来,我们添加闸门。闸门具有碰撞箱,子弹、玩家无法通过;当使用钥匙开启闸门后,删除闸门碰撞箱。
动态地图障碍
在中级篇介绍过,我们的引擎通过下面的积木,判断是否碰到了地图障碍。而下面的积木除了检测是否碰到本体,同样也可以检测是否碰到了克隆体:
因此,我们可以通过创建“地图碰撞箱”的克隆体,来创建新的障碍,从而动态地创建闸门的碰撞箱;当闸门开启时,也可以方便地删除闸门对应的碰撞箱克隆体:
我们可以为地图碰撞箱的克隆体添加下面的代码:
这样,我们就实现了动态地图障碍。
添加闸门代码
在“子弹”角色中,添加闸门代码:
- 靠近闸门按 [E] 后 ,检测玩家背包是否有“钥匙”物品
- 如果没有,提示“需要钥匙开启”
- 如果有钥匙,删除背包中的钥匙,同时删除闸门对应的地图碰撞箱克隆体
放置闸门
当玩家来到地图右侧时,放置闸门
钥匙道具
钥匙道具可以看成一种特殊的武器。
玩家武器在读取定义时,武器类型默认为“-”。对于没有定义的武器(比如钥匙这样的物品),它们的类型就是“-”
对于这类物品,玩家手持并点击左键时,不执行任何动作:
这样,我们就可以通过“掉落武器”的方式,掉落物品:
敌人掉落钥匙
我们可以让一个敌人死亡后,掉落钥匙物品:
给敌人添加代码:如果“掉落武器”不为空,则死亡时掉落对应的武器:
这样,敌人死亡后,就会掉落钥匙。使用钥匙就可以打开闸门!
上一节:01 贩卖机
下一节:03 自动炮台
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG303/Arkos/Lec6/03&type=comment"
title="{射击课高级篇-第六课-03}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>