事件表特殊用法

在唤境Evkworld中事件表是整个游戏逻辑的核心,在这篇教程中将会介绍事件表的一些高级用法,制作比普通事件逻辑更复杂的事件.在阅读本篇教程之前需要您了解唤境Evkworld事件的工作原理和编辑事件的方法.

特殊的条件

系统条件中有三个特殊的条件于其他的条件工作方式不同.分别是”仅触发一次”,”全选实例”,”否则else”.

仅触发一次

这个条件作用是让持续触发的条件变成只触发一次.与持续检测事件组合使用检测”如果最后一次没有达到这个条件”,仅触发一次条件置于条件最下方.
如下图所示,一般制作播放音乐时都会犯以下的错误.当飞机血量等于0时,播放飞机播放音频.但是事件是每帧执行的,一般游戏中FPS一般为60,所以这个音效会播放60次.

这是不符合我们的预想的,我们只需要当飞机血量等于0时,播放一次飞机爆炸的音频.所以我们添加”仅触发一次”条件,让当音效只播放一次.

全选实例

一般事件的执行方法是通过条件过滤不符合条件的实例,选择符合条件的所有实例执行动作.而全选实例则是反向运行的唯一条件,这个条件会重新选择所有实例对象,在后续的条件中再次通过条件筛选实例.在多重嵌套事件中,可以快速的重置选择的实例对象.

否则else

这个条件作用于当前一个事件没有执行,则运行这条事件,这个条件必须用于条件的第一个.

下面的例子是当触摸屏幕时,如果全局变量状态等于0设置全局变量状态为1,全局变量状态等于1设置全局变量状态为0.

新使用唤境Evkworld的用户可能会经常犯下图所示的错误.因为事件表是从上往下执行的,所以下图所设置的事件表在每一次触摸屏幕时都会先把全局变量状态值设置为1,但又马上符合下面一个条件,把全局变量状态值设置为0.

我们只需要把第二个子事件改为使用否则else就可以了.

请注意,”否则else”条件不会选择任何实例,请看下面一个例子.

上面所示的事件希望当怪物在屏幕内时,让怪物的方向朝向玩家,当怪物不再屏幕内时,让怪物转向90度.这有两个问题。首先如果有任何怪物在屏幕上,那么”否则else”条件将根本不会运行,因为第一个事件已经运行,因此”否则else”不会运行。第二即使”否则else”事件运行,它也不会特意选择屏幕外的怪物:它会影响所有怪物,因为”否则else”不会选择实例。在这种情况下,最好简单地用事件的反转功能,如下图所示即可达到效果.

使用”否则else”组合其他条件即制作”else-if”逻辑,如下图所示.