[实战]用FSM制作平台游戏陷阱
这次我们来尝试用C2制作平台游戏里的地刺陷阱:
1 准备资源
首先我们准备好要做的陷阱,以地刺陷阱为例,我们需要为地刺陷阱的精灵制作4个动画:
close 关闭动画
born 出生动画
idle 开启动画
dead 消亡动画
每个帧动画都有自己的碰撞区域,在地刺的各个状态下都可以进行伤害检测。
这里有个特殊的设置,close关闭状态的动画,碰撞检测设置为全部图片尺寸。这是为了在触发陷阱时能够取到碰撞区域。
同时,为了方便以后添加各种不同类型的地刺,我们创建了fam_sting的family:
---------------------------------------------------------------------------------------------------------
2 设置变量
为fam_sting创建4个私有变量,分别是:
1 type:地刺的逻辑类型(这里我们会制作3种逻辑的地刺)
2 start:启动时间,触发时延迟多久启动,或用来控制地刺的间隔形态
3 on:开启状态的持续时间
4 off:关闭状态的持续时间
---------------------------------------------------------------------------------------------------------
3 添加行为
为fam_sting添加timer和FSM这两个行为,其中FSM行为需要安装rex的FSM行为插件
---------------------------------------------------------------------------------------------------------
4 FSM的动画切换:
FSM也有 idle, close, on, off这4个状态,对应动画起同样的名字,在这里,我们先添加好on FSM enter to state的动画改变事件。即当每个地刺实例改变状态的时候,同时改变精灵的动画资源:
---------------------------------------------------------------------------------------------------------
5 3种不同的type:
在这里,我们设计3种不同的type,对应3种陷阱模式:
type = 0 陷阱常态打开,即我们常见的碰到即死的地刺
type = 1 固定节奏开关的地刺陷阱,表现为开启一段时间,关闭一段时间
type = 2 触发型地刺陷阱,当有角色进入陷阱区域就会把陷阱弹出来,一段时间后自动收回去
以上3种陷阱模式,需要在精灵实例上手动填写私有变量内容,控制陷阱类型,以及对应的参数:
---------------------------------------------------------------------------------------------------------
6 type 0:
非常简单,直接为精灵的私有变量填写为type = 0 即可。
事件也很简单,保持FSM在idle状态:
效果参考:
---------------------------------------------------------------------------------------------------------
7 type 1:
固定时间的事件逻辑需要用到timer。逻辑按顺序如下:
第4行: 当精灵被创建时,将状态置为close
随后开启一个与变量start数值相同的timer,名为start
第5行: 当start计时器结束时,将状态置为on,这个时候根据之前设置的FSM事件,会开始播放born动画
第8行:当born动画播放完毕时,进入idle状态,并根据on变量开启一个名为on的timer
第6行:当on计时器时间结束,进入off状态,根据FSM设置,同时会进入dead动画
第9行:当dead动画结束时,进入close状态,开启off计时器
第7行:off计时器结束,重新回到on状态,回到前面第5行的逻辑
type1类型的陷阱,就是固定间歇的发动和关闭效果:
通过修改start的值,,为每个精灵做出一些间隔,也可以制作出这种花样来
---------------------------------------------------------------------------------------------------------
8 type 2:
与type1类似,type2基本也是靠timer来控制:
与之前不同的是,type2添加了与角色的overlapping判定:当角色与close状态的地刺重叠时,才发动start计时器。这里添加了一个ready状态进行中转等待,表明不在之前的4个状态里的任何一个。
type2的配置最大的区别在于start的时间,我们可以统一设置为0.2秒,这个时间不再是之前的项目启动后的机关间歇,而是当触发机关时给玩家预留的逃离时间。
---------------------------------------------------------------------------------------------------------
9 同类应用:
相同的方法也可以用在其他陷阱上,以下是一些例子:
大佬总在深夜里分享~