• 参考
  • ECA
  • 装备限制

装备限制

概览

对装备的品类或者数量做限制是RPG类游戏中一个常见的机制,例如一个玩家觉得只能携带一把武器和一件装甲,比如在FPS游戏中,玩家同时只能持有一把枪,想要切换到另一把枪就会把当前持有的武器移除掉,这些实际上的游戏效果都是装备限制

装备属性和类型的储存

当玩家拾取装备时,如果玩家单位上没有该类型的装备,则会直接进行装备。

如果已经装备有同类型的装备,那么此时拾取的装备将被直接丢弃。

同时这个丢弃会被定义为系统丢弃,也即是不会触发对应的玩家丢弃流程。

第一部分是对数据进行存储,需要现在物编编辑器中定义每个装备的名称,图标等等,以及使用自定义值功能为其添加一个type项以表示其装备类型。

E1

拾取物品

当玩家拾取一个物品时,创建两个局部变量来接收这个单位和对应的物品。

E2

获取物品的‘type’属性,来判断当前单位是否具有此类型的物品。

E3

如果判定为具有该类型物品,则需要将物品系统丢弃。

通过在物品的自定义值真值‘SystemDiscard’标记以让丢弃系统过滤掉本次操作。

如果判定为不具有该类型物品,则玩家成功获得物品,并将对应的‘type’类型标记为有。

并且储存当前持有的本物品,以方便后续根据物品变量显示对应的特效效果。

E4

特效生成

想要为一个已有的事件附加另一个效果,可以使用自定义事件功能。

我们可以通过发送自定义事件和接收自定义事件来传输信息,在获得新装备后,可以发送一个自定义事件,通过事件来激活对应的特效功能。

对于武器和铠甲,我们使用了两种格式来对特效进行创建。

武器的特效是直接绑定在角色手部的拖尾,所以我们只需要直接将对应的特效路径以自定义值的形式保存在物品上,就可以用同一个函数启用所有的武器特效。

护甲的特效则复杂一些,它们由多个特效组合盘旋而成,所以我们需要一个函数内部对这些特效进行不间断的生成和销毁。

E5

然后,我们根据自定义事件传递的物品和type参数进行分敛,以通知到不同类型的特效创建函数,执行对应的效果即可。

E6

特效销毁

在函数库中,我们需要新建三个函数,分别是武器,盔甲1和盔甲2.

对于武器特效功能,在单位的节点添加一个拖尾特效,启动一个循环计时器,检测当前玩家持有的武器是否是该装备,如果已经丢弃,则将其移除,并对所有结构进行销毁。

E7

盔甲1的特效显示逻辑和武器特效类似,不同的是,盔甲的特效将在每秒计时器到时后生成,并在两秒后将其销毁。

E8-E9

为了显示盔甲2的特殊效果,我们为单位创建了两个投射物,并使用局部变量进行储存。

为了实现球体的环绕效果,我们需要定义一个角度,这个角度将会每帧进行递增,以实现帧叠加以后的球体圆周运动。

E10

我们使用一个帧计时器(0.03秒)来检测装备是否还在被装备,如果它被丢弃,对所有结构进行销毁。

E11-E12

当程序一直持续循环运行,球体的角度会在每一帧减去6,并根据一个固定的距离,以角色位置为圆心,通过极坐标系确定本帧投射物该在的位置。

E13

丢弃物品

与拾取物品类似,当一个单位丢弃物品时,先使用局部变量对参数进行缓存。

如果该物品被检测为系统丢弃,则跳过整个流程,当做无事发生,因为一个未被允许装备的物品是不会运行对应的装备流程的。

如果判断物品是被玩家手动抛弃,可以先获取其对应的type,根据type对单位的对应自定义值项进行清空,这项数据的清空同时也会被一直检测本数据的特效结构得知,从而进行特效的销毁。

E14-E15