Construct2/3

创建于:2017-02-24

创建人: iconboy

103 信息 412 成员
Construct2/3 引擎开发专题

[实战]用FSM制作平台游戏陷阱

potion 2017-10-30

这次我们来尝试用C2制作平台游戏里的地刺陷阱:

Image title

1 准备资源

首先我们准备好要做的陷阱,以地刺陷阱为例,我们需要为地刺陷阱的精灵制作4个动画:

close 关闭动画

Image title

born 出生动画

Image titleImage titleImage title

idle 开启动画

Image title

dead 消亡动画

Image titleImage titleImage titleImage titleImage titleImage title

每个帧动画都有自己的碰撞区域,在地刺的各个状态下都可以进行伤害检测。

这里有个特殊的设置,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状态:


效果参考:

Image title

---------------------------------------------------------------------------------------------------------

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类型的陷阱,就是固定间歇的发动和关闭效果:

Image title

通过修改start的值,,为每个精灵做出一些间隔,也可以制作出这种花样来

Image title

Image title

---------------------------------------------------------------------------------------------------------

8 type 2:

与type1类似,type2基本也是靠timer来控制:


与之前不同的是,type2添加了与角色的overlapping判定:当角色与close状态的地刺重叠时,才发动start计时器。这里添加了一个ready状态进行中转等待,表明不在之前的4个状态里的任何一个。

type2的配置最大的区别在于start的时间,我们可以统一设置为0.2秒,这个时间不再是之前的项目启动后的机关间歇,而是当触发机关时给玩家预留的逃离时间。

Image title

---------------------------------------------------------------------------------------------------------

9 同类应用:

相同的方法也可以用在其他陷阱上,以下是一些例子:

Image title

Image title



近期喜欢的会员

 
totoyan 2017-10-30

大佬总在深夜里分享~

 
potion 2017-10-30

totoyan Indienova上传图和排版很方便

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册