Skip to content

大家族-开关

基础要求

先尝试回答下面的问题:什么是触发?什么是开关触发?什么是触发的拆分与套娃?为什么设计开关要用到独立开关A、B乃至更多?什么是持续触发和单次触发?事件的串行、并行如何设置?需要先了解基础知识哦!

如果你对上述问题有疑问,那么说明你还不了解 触发的本质。

需要去看看:”8.物体 > 触发的本质.docx”。

也可以去看看示例中 机关管理层 的 触发的本质 介绍。

相关插件

传感器类:

◆Drill_EventPressureSwitch 物体 - 重力开关

◆Drill_EventMouseSwitch 物体 - 键盘响应开关

◆Drill_EventMouseSwitch 物体 - 手柄响应开关

◆Drill_EventMouseSwitch 物体 - 鼠标响应开关

◆Drill_EventMouseHoverSwitch 物体 - 鼠标悬停响应开关

◆Drill_EventAutoTrigger 物体触发 - 固定区域 & 玩家接近 & 条件触发

◆Drill_EventStoppingSwitch 物体 - 制动开关

◆Drill_EventSightSwitch 物体 - 镜头视野开关

复合传感器类:

◆Drill_EventMutiSwitch 物体 - 计数开关

◆Drill_EventSequentialSwitch 物体 - 序列开关

◆Drill_EventGatherSwitch 物体 - 聚集开关

这里主要对一些有特点的开关进行说明。

名词索引

以下你可以按住ctrl键点击下面的词,可以直接定位到想了解的名词:

传感器传感器 重力开关 脉冲开关 多状态开关鼠标响应开关 鼠标接触响应开关接近开关 制动开关
复合传感器复合传感器 计数开关 序列开关 聚集开关
其它物体触发 通用写法

快速区分

传感器:监听单个事件的条件,开启事件自身的独立开关。

一般用于某些情况就会自动开启的事件。比如鼠标响应开关、重力开关等。

复合传感器:监听多个事件的条件,开启指定事件的独立开关。

一般用于连接开关与门,用于控制开关如何开启门。比如计时开关、序列开关等。

二者从结构上 没有本质区别,都是根据条件自动触发独立开关。但是,在设计开关与门路时,最好区分设计,这样能够作为两种不同的元件进行组合使用。

物体触发:物体触发是一个大类,常用于实现复杂的独立开关触发功能。

比如区域触发,能设置筛选器,实现各种特定条件的触发功能。

虽然原理也是开启独立开关,但是功能上与传感器、复合传感器区别较大。

插件关系

开关插件都是独立的个体,大部分可以单独使用:

传感器

一次性开关

1)基本信息

> 来自插件

无(基于游戏默认自带的独立开关与事件页)

> 简介

一次性开关是最基本的开关,即按下后,永久处于按下状态。

> 开关示例

开关示例在 机关管理层 中 一次性开关 的介绍。

> 关卡设计示例

此功能为基础功能,暂时没有专门的关卡设计。

2)使用方法

触发条件设置为:玩家接触,

然后执行内容直接写 打开独立开关 的指令即可。

3)开关触发与事件页

一个最基本的注释如下图所示。

事件页关系如下图所示。

事件页条件描述指令
1开关未按状态脚踩就开启独立开关A
2独立开关A开关按下状态

4)时钟信号图

这里介绍一下时钟信号图,假设3个开关控制着门,0表示独立开关 OFF,1表示独立开关 ON,那么就有下图:

H:pg mv 箱aa.jpg

根据时钟信号图可知,开关按下后,将一直处于1的状态。

三个开关为1时,才能开门。

计时开关

1)基本信息

> 来自插件

无(基于游戏默认自带的独立开关与事件页)

> 简介

计时开关在 一次性开关 基础上多了一个并行计时回弹功能:

> 开关示例

开关示例在 机关管理层 中 计时开关 的介绍。

> 关卡设计示例

此功能为基础功能,暂时没有专门的关卡设计。

2)使用方法

你可以直接复制示例中现成的计时开关事件,

通过 计数开关插件 实现计时功能的 那个开关 更好一些。

3)开关触发与事件页

一个最基本的注释如下图所示。(并行处理,等待5秒之后,关闭独立开关)

事件页关系如下图所示。

事件页条件描述指令
1开关未按状态脚踩就开启独立开关A
2独立开关A开关按下状态并行控制计时,时间到则关闭独立开关A

4)时钟信号图

计时开关的时钟信号图如下图。

H:pg mv 箱标aa题-1.png

由图可知,计时开始时,独立开关ON,时间到后,独立开关OFF。

5)单次触发与持续触发介绍

示例中有两个 计时开关 ,分别通过 单次触发与持续触发 实现,

你可以去文档 ”8.物体 > 触发的本质.docx” 中了解下 单次触发与持续触发 的知识。

重力开关

1)基本信息

> 来自插件

Drill_EventPressureSwitch 物体 - 重力开关

> 简介

重力开关踩着会按下,离开会弹起。

> 开关示例

开关示例在 机关管理层 中 重力开关、鼠标接触开关 的介绍。

> 关卡设计示例

此功能为基础功能,暂时没有专门的关卡设计。

2)使用方法

你可以直接复制示例中现成的重力开关事件,复制有四个事件页的那个。

简单重力开关只有两个事件页。

常规的重力开关有四个事件页,分为 弹起状态、弹起动作、按下动作、按下状态。

如果你想从零开始构建触发,可以去看看 机关管理层 的触发的本质介绍流程。

3)开关触发与事件页

一个最基本的注释如下图所示。

事件页关系如下图所示。

事件页条件描述指令
1开关按下动作踩住则立即开启独立开关A,离开则立即关闭独立开关A。
2独立开关A开关按下状态

4)时钟信号图

这里的重力开关触发,是瞬间的,按下这立即开启,离开则立即回弹。

H:pg mv 箱dd1.jpg

重力开关插件提供的功能非常基础纯粹,如果你有复杂的用法,见后面进阶结构

5)进阶结构 - 重力开关

上述重力开关,是一个常规的开关雏形,而通常见到的开关,多了两个缓冲动作:

开关按下动作:此动作在开关按下瞬间执行一次,比如播放按下开关的声音。

开关回弹动作:此动作在开关回弹瞬间执行一次,比如播放开关弹起的声音。

加入了两个动作后,过程入下图:

H:pg mv 箱ss1.jpg

用触发来描述,则为:

“玩家踩在重力开关之后,触发按下开关的功能,并且要有按下声音”

“玩家离开重力开关之后,触发弹起开关的功能,并且要有弹起声音”

按照触发的拆分方法和套娃方法,形成了下面这种复合触发的流程。

(去看 “8.物体 > 触发的本质.docx” 的 触发的拆分方法 和 触发的套娃方法 章节)

然后形成了下面的事件页跳转流程。

事件页条件描述指令
1开关弹起状态脚踩则立即开启独立开关A,离开则立即关闭独立开关A。
2独立开关B开关弹起动作弹起声音。关闭B。
3独立开关A开关按下动作按下声音。开启B、C。
4独立开关C开关按下状态并行判断A的开关;**如果A被关了,立即关闭C,**这样就跳转到了事件页2。

6)事件触发事件功能

重力开关提供了 条件钥匙与条件锁 的功能。

必须特定有条件钥匙的事件,才能按下有条件锁的重力开关。

这个功能,能充当简易的 事件触发事件 功能。

即只有特定的事件,才能触发重力开关,玩家、其他事件都无法触发。

7)获取上一个触发对象

重力开关还提供了触发重力时,获取上一个触发重力的事件id的功能。

(如果是玩家踩重力开关,则赋值-2)

可以参考 机关管理层 中,重力开关中对 弹丸转向砖 的介绍。

脉冲开关

1)基本信息

> 来自插件

Drill_EventPressureSwitch 物体 - 重力开关

> 简介

脉冲开关,是重力开关的二次迭代的高级用法。

原理为:按第一次的时候ON,按第二次的时候OFF,第三次ON,如此往复。

> 开关示例

开关示例在 机关管理层 中 脉冲开关 的介绍。

> 关卡设计示例

示例中有具体的解谜:设计-脉冲开关 。

你可以去看看 ”8.物体 > 解谜设计-脉冲开关.docx” 中的介绍。

2)使用方法

你可以直接复制示例中现成的脉冲开关事件。

你也可以了解脉冲开关的通用写法,见章节:5)通用写法 - 脉冲通用写法

如果你要设计 只能踩一次的脉冲开关,见后面章节:6)只能踩一次的脉冲开关

3)开关触发与事件页

一个最基本的注释如下图所示。

脉冲开关两页事件页,第一页和第二页一样。(注意,第二页的条件是独立开关B)

都是 下面的执行内容,通过ABC三个独立开关控制。

初步理解的事件页关系如下图所示。

事件页条件描述指令
1开关按下动作踩住时,开启独立开关A,离开时,关闭独立开关A。第一次踩住则开启独立开关B,第二次踩住则关闭独立开关B,如此往复。
2独立开关A开关按下状态

注意,这里只是初步理解,实际运行方式见后面章节。

4)时钟信号图与实现原理

脉冲开关需要独立开关A、B两个,A为重力开关控制,B为A的第二次迭代。

H:pg mv 箱标ddda题-1.jpg

这里的重点思路就在时钟信号图中,实现二次迭代如下:

重力开关反复切换A的开启与关闭,

C用于记录上一次A的状态,当A的开关状态与C的开关状态不同时,

说明此时正在按下/正在弹起,B在这时候才切换ON/OFF,就实现了二次迭代。

并且,B的OFF和ON正好对应事件页1和事件页2。

因此事件页进一步的关系如下图。

事件页条件描述指令
1开关弹起状态踩住时,开启独立开关A,离开时,关闭独立开关A。C用于记录A的上一次状态。A和C状态不同时,切换B开关。
2独立开关B开关按下状态踩住时,开启独立开关A,离开时,关闭独立开关A。C用于记录A的上一次状态。A和C状态不同时,切换B开关。

事件页不影响 独立开关B的切换,因此事件页1和事件页2的指令才一模一样。

5)通用写法 - 脉冲通用写法

前面章节以及示例中,都介绍了:

重力开关+二次迭代 = 脉冲开关

那么,如果我们使用鼠标响应开关,那么我们就能实现:

鼠标响应开关+二次迭代 = 鼠标脉冲开关

(或许可以实现:鼠标第一次悬停播放气泡声,第二次悬停播放爆炸声)

再如果是其他的插件,比如镜头视野开关,我们就能实现:

镜头视野开关+二次迭代 = 镜头视野脉冲开关

(或许可以实现:第一次看见的是一个凳子,第二次看见的是一个小爱丽丝)

想到这里,你会注意到,二次迭代到底是什么?

原来,二次迭代只是一种通用写法。

前面费那么多章节介绍了脉冲开关的 事件页与时钟信号图,是不是仍然看不懂?没关系,所有脉冲开关的二次迭代都是固定的写法,无非就是插入了很多其他指令,导致你看不明白,记住下面的特点就容易理解了。

示例中提供了一个最简单的通用写法:

脉冲通用写法具有以下特点:

> 脉冲通用写法 需要并行处理

(注意最下方的等待帧指令,等待2或3帧,能节约并行事件的性能)

> 脉冲通用写法 的所有相关事件页,都是相同的指令,且都是并行处理

(这里指的是写法的指令相同,额外加的注释或自定义指令 不包括在内)

> 脉冲通用写法 的最外层独立开关 连接 开关触发

> 脉冲通用写法 的最内层独立开关 用于二次迭代的结果事件页

(出现条件也可以使用 自定义的独立开关,但写法有些不一样)

(可以去看看“8.物体 > 独立开关与事件页.docx”了解 自定义出现条件)

> 脉冲通用写法 的最内层的独立开关 的指令有两种等价写法

(注意不要搞反了第1次和第2次接触的位置。)

> 脉冲通用写法用到三个独立开关:ABC,其名字可以自定义,但是顺序位置不能变

(独立开关的名字可以随便改,可以是 Q1、Q2、Q3)

(你可以去看看 机关管理层 的脉冲开关的事件介绍,有个使用Q1、Q2、Q3独立开关实现的脉冲开关)

另外留意一下,一个开关触发能进行 二次迭代 有两个前提:一是 能持续触发,即能使独立开关根据条件 持续保持 开启/关闭状态。二是 有双向完整的触发,即 满足条件时关闭+不满足条件时开启 两个触发。(文档”8.物体 > 触发的本质.docx”有 持续触发 的知识点介绍)

6)只能踩一次的脉冲开关

在只能踩一次开关的解谜游戏用的非常多,其规则为:

开关一旦踩了第二次,谜题失败,需要重新开始。

根据脉冲开关的结构,你可以直接最上层添加一个 开关,用于控制失败情况,如下图。

只需要在B开关OFF的时候,设置关卡失败就可以了,

因为B为OFF时,肯定已经接触了至少一次。

多状态开关

1)基本信息

> 来自插件

Drill_EventPressureSwitch 物体 - 重力开关

Drill_EventMouseHoverSwitch 物体 - 鼠标接触响应开关

> 简介

多状态开关不一定仅仅局限于ON和OFF两种状态,可以设置为N种状态。

> 开关示例

开关示例在 机关管理层 中 多状态开关 的介绍。

> 关卡设计示例

示例中有具体的解谜:设计-逻辑图形 。

你可以去看看 ”14.鼠标 > 解谜设计-逻辑图形.docx” 中的介绍。

2)使用方法

你可以直接复制示例中现成的多状态开关事件。

3)开关触发与事件页

一个最基本的注释如下图所示。

事件页关系如下图所示。

脉冲开关是这样的:ON->OFF->ON->OFF->ON->OFF->……

多状态开关是这样的:1->2->3->1->2->3->1->2->3->……

事件页条件描述指令
1空状态踩下/点击后,开P1。
2独立开关P1状态1踩下/点击后,开P1关P2。
3独立开关P2状态2踩下/点击后,开P2关P3。
4独立开关P3状态3踩下/点击后,关P3。

注意,独立开关P1/P2/P3和A/B一共是5个独立开关。

事件页1的空条件也是一种状态,并且空条件要求P1、P2、P3全都关闭。

4)时钟信号图

多状态开关由原来只能ON和OFF开关之间的切换,迭代成了1/2/3这种计数的切换,

因此 时钟信号图 在这种情况下不适用了,所以这里不提 时钟信号图。

5)通用写法 - 多状态通用写法

所有多状态开关都是固定的写法,无非就是插入了很多其他指令,导致你看不明白,记住下面的特点就容易理解了。

示例中提供了一个最简单的通用写法:

多状态通用写法具有以下特点:

> 多状态通用写法 需要并行处理

(注意最下方的等待帧指令,等待2或3帧,能节约并行事件的性能)

> 多状态通用写法 的所有相关事件页,都是相同的指令,且都是并行处理

(这里指的是写法的指令相同,额外加的注释或自定义指令 不包括在内)

> 多状态通用写法 的最外层独立开关 连接 开关触发

> 多状态通用写法的最内层为多个独立开关开启/关闭,用于切换到指定状态的事件页

(最内层 为每次接触时执行的自定义指令,多状态就在这里实现切换)

另外留意一下,一个开关触发能进行 多状态变化 有两个前提:一是 能持续触发,即能使独立开关根据条件 持续保持 开启/关闭状态。二是 有双向完整的触发,即 满足条件时关闭+不满足条件时开启 两个触发。(文档”8.物体 > 触发的本质.docx”有 持续触发 的知识点介绍)

6)事件页复合结构

多状态开关+鼠标点击的事件中,

由于 鼠标高亮触发+鼠标点击触发+多状态通用写法 都写在一起,所以看起来很复杂。

鼠标高亮可见前面章节:鼠标触发事件高亮

以 设计-逻辑图形 关卡的多状态开关为例,其开关有两个环。

第一个环(蓝)是多状态切换的流程,

第二个环(淡蓝)是鼠标点击的流程。

事件页条件描述指令
1空状态悬停开M1,点击开M3。
2独立开关M1鼠标悬停动作开M2。
3独立开关M2鼠标悬停状态如果离开悬停,关M2。
4独立开关A状态1无。
5独立开关B状态2无。
6独立开关C状态3无。
7独立开关M3鼠标按下动作关M3。根据情况控制状态:1.开A4.开B关A。5.开C关B。6.关C。

实际上,要添加更多的状态,只需要在6后面加内容,然后修改最后一个事件页所对应独立开关的开启/关闭就可以了。

键盘响应开关

1)基本信息

> 来自插件

Drill_EventKeyboardSwitch 物体 - 键盘响应开关

> 简介

键盘响应开关能设置 持续触发 和 单次触发的 按下[一帧]、释放[一帧]、双击[一帧],全图任意位置都有效。

> 开关示例

开关示例在 机关管理层 中 键盘响应开关 的介绍。

> 关卡设计示例

此功能为基础功能,暂时没有专门的关卡设计。

2)使用方法

你可以直接复制示例中现成的键盘响应开关的事件。

3)开关触发与事件页

一个最基本的注释如下图所示。

事件页关系如下图所示。

事件页条件描述指令
1开关弹起状态键盘”a”按下时,开A。键盘”a”没按下时,关A。
2独立开关A开关按下状态

键盘除了”a”键,还有其他的物理按键,

可以去看看:“1.系统 > 关于输入设备核心(入门篇).docx”。

手柄响应开关

1)基本信息

> 来自插件

Drill_EventPadSwitch 物体 - 手柄响应开关

> 简介

手柄响应开关能设置 持续触发 和 单次触发的 按下[一帧]、释放[一帧]、双击[一帧],全图任意位置都有效。

> 开关示例

开关示例在 机关管理层 中 手柄响应开关 的介绍。

> 关卡设计示例

此功能为基础功能,暂时没有专门的关卡设计。

2)使用方法

你可以直接复制示例中现成的手柄响应开关的事件。

3)开关触发与事件页

一个最基本的注释如下图所示。

事件页关系如下图所示。

事件页条件描述指令
1开关弹起状态手柄”X”按下时,开A。手柄”X”没按下时,关A。
2独立开关A开关按下状态

手柄除了”X”键,还有其他的物理按键,

可以去看看:“1.系统 > 关于输入设备核心(入门篇).docx”。

鼠标响应开关

1)基本信息

> 来自插件

Drill_EventMouseSwitch 物体 - 鼠标响应开关

> 简介

鼠标响应开关能设置 左键按下、右键按下、滚轮按下、滚轮上滚、滚轮下滚 的条件,全图任意位置都有效。

> 开关示例

开关示例在 机关管理层 中 鼠标响应开关 的介绍。

> 关卡设计示例

此功能为基础功能,暂时没有专门的关卡设计。

华容道解谜用到了该插件,你可以去看看 ”14.鼠标 > 解谜设计-华容道.docx” 中的介绍。

2)使用方法

你可以直接复制示例中现成的鼠标响应开关的事件。

(但一般情况下很少用到该功能,常用的是 鼠标接触响应开关

3)开关触发与事件页

一个最基本的注释如下图所示。

常用的注释为上述两个基本触发的合并写法,如下。

事件页关系如下图所示。

事件页条件描述指令
1开关弹起状态鼠标左键按下时,开A。鼠标左键没按下时,关A。
2独立开关A开关按下状态

除了左键按下功能,该插件还提供了其他持续触发的绑定功能:

鼠标接触响应开关

1)基本信息

> 来自插件

Drill_EventMouseHoverSwitch 物体 - 鼠标悬停响应开关

> 简介

鼠标悬停响应开关在悬停会按下,离开会弹起。

并且也能设置 悬停+左键按下、悬停+右键按下、悬停+滚轮按下、悬停+滚轮上滚、悬停+滚轮下滚 的条件。

F:pg mv箱集开关(三消)法.png

> 开关示例

开关示例在 机关管理层 中 鼠标悬停响应开关 的介绍。

> 关卡设计示例

此功能为基础功能,暂时没有专门的关卡设计。

但是在 鼠标管理层 中,有大量事件应用了此插件的功能,实现鼠标点击事件对话。

华容道解谜用到了该插件,你可以去看看 ”14.鼠标 > 解谜设计-华容道.docx” 中的介绍。

2)使用方法

你可以直接复制示例中 机关管理层 现成的鼠标响应开关的事件。

或者 鼠标管理层 的可以点击对话的小爱丽丝。

3)开关触发与事件页

一个最基本的注释如下图所示。

常用的注释为上述两个基本触发的合并写法,如下。

事件页关系如下图所示。

事件页条件描述指令
1开关弹起状态鼠标悬停时,开A。鼠标不在悬停区域时,关A。
2独立开关A开关按下状态

除了 悬停 功能,该插件还提供了其他持续触发的绑定功能:

4)进阶结构 - 鼠标悬停反馈设计

鼠标的结构与 前面介绍重力开关的 5)进阶结构 - 重力开关 一样,

为了方便 鼠标管理层 大量按钮的使用,

这里将鼠标的独立开关额外定义为:M1、M2、M3:

F:pg mv箱集开关(三消)法.png

事件页条件描述指令
1开关弹起状态鼠标接近立即开启M1。
2独立开关M2鼠标悬停动作关M2。
3独立开关M1鼠标悬停状态开M2、M3。
4独立开关M3开关按下状态**并行判断M1的开关;****如果M1被关,立即关闭M3。**

在事件页2和3中,播放鼠标悬停时“嗒”的一声,以此来增强鼠标的反馈效果。

鼠标管理层中经常用到的 鼠标-鼠标触发事件 插件,实际上就是 物体-鼠标响应开关 和 物体-鼠标悬停响应开关 结合的指令功能。后两者插件的指令能更准确描述 持续触发/单次触发、独立开关、触发条件 这些配置。

接近开关

1)基本信息

> 来自插件

Drill_EventAutoTrigger 物体触发 - 固定区域 & 玩家接近 & 条件触发

> 简介

接近开关和重力开关相似,但接近开关能够实现远距离触发事件。

> 开关示例

开关示例在 机关管理层 中 接近开关 的介绍。

> 关卡设计示例

可以去 物体触发管理层 的 大量亮片区域 去看看,

接近开关也属于 物体触发类 的插件,区域可以完全自己定制,

可以去看看 ”9.物体触发 > 关于玩家接近触发.docx” 。

也可以看看后面的从零开始设计:自动关闭的门

2)使用方法

你可以直接复制示例中现成的重力开关事件。

也可以去 物体触发管理层 看看抓玩家、躲玩家的小爱丽丝。

3)开关触发与事件页

一个最基本的注释如下图所示。

事件页关系如下图所示。

事件页条件描述指令
1开关弹起状态进入玩家区域范围时,开A,离开玩家区域范围时,关A。
2独立开关A开关按下状态无。

注意,如果没有设置”离开范围自动OFF”,那么事件页2回到1的跳转是没有的。

制动开关

1)基本信息

> 来自插件

Drill_EventStoppingSwitch 物体 - 制动开关

> 简介

制动开关即事件在移动时被阻塞,超过最大停留时间则会开启独立开关。

如果事件继续移动,那么会关闭独立开关。

> 开关示例

开关示例在 机关管理层 中 制动开关 的介绍。

> 关卡设计示例

示例中有具体的解谜:设计-弹丸反射 。

你可以去看看 ”8.物体 > 解谜设计-弹丸反射.docx” 中的介绍。

通常制动开关被用于弹丸事件的设计,在 模板管理层 中有弹丸示例。

可见文档:“9.物体触发 > 物体设计-简易弹丸制作.docx”。

制动开关还还可以用于制作 被推动后一直向前移动的 光滑冰块。

在 机关解谜管理层 中有示例,可见文档:”26.图块 > 关于物体滑行.docx”。

2)使用方法

由于制动开关与其他插件组合使用的非常多,

所以最好先去 机关管理层 了解制动开关,然后再去 机关解谜管理层 了解弹丸设计。

3)开关触发与事件页

一个最基本的注释如下图所示。

事件页关系如下图所示。

事件页条件描述指令
1开关持续移动停留时间超时时,开A,继续移动时,关A。
2独立开关A开关暂停超时无。

注意,如果这个独立开关A切换了事件页,而第二个事件页是站着原地不动,那么”继续移动时关A” 的触发就执行不到了。

4)时钟信号图

这里需要留意,暂停移动后,还需要等限时时间,才会开启A。

制动开关的通常用法为:开启A的一瞬间,并行执行A的事件页(比如碰壁后爆炸)。

5)移动路线切换的制动问题

在我们设计事件的时候,容易忽视一种情况而掉入到一个坑,

那就是 切换事件页的时候,也会切换移动路线

如果这个独立开关A切换了事件页,而第二个事件页是站着原地不动,

那么 “继续移动则关闭A” 的触发 就执行不到了。

因此,设计需要避免独立开关切换事件页;

也可以让一个空白事件通过并行处理强制让这个弹丸一直移动。

示例中使用了后者方法,这样弹丸触发制动变红时,不会影响自己继续移动的指令。

6)阻塞设置

默认物体在上方(飞行)或下方(地面),相互是没有碰撞阻塞的。

没有碰撞,自然也不能让制动开关因为阻塞停下的功能生效了,

所以加阻塞的注释可以让飞行/地面物体也能阻塞。

7)获取撞击位置

制动开关还提供了触发制动时,获取开关朝向前面一格位置的功能。

注意,如果事件是自己主动停下来的,撞击位置仍然能获取到,是事件位置向前一格的位置。

镜头视野开关

1)基本信息

> 来自插件

Drill_EventSightSwitch 物体 - 镜头视野开关

> 简介

镜头视野开关即 开关事件 被玩家的镜头看见时,即可开启开关。

> 开关示例

开关示例在 机关管理层 中 镜头视野开关 的介绍。

> 关卡设计示例

开关通常和镜头的功能一起使用,你可以去 体积管理层 看看镜头墙的设计。

当镜头墙被突破时,镜头墙后的事件会被看见,这时候可以播放 发现秘密 的响声。

2)使用方法

你可以直接复制示例中现成的镜头视野开关事件。

也可以去 体积管理层 看看秘密响声设置。

3)开关触发与事件页

一个最基本的注释如下图所示。

事件页关系如下图所示。

事件页条件描述指令
1开关弹起状态进入视野时,开A,离开视野时,关A。
2独立开关A开关按下状态无。

4)机制详解

镜头的分辨率(屏幕大小)设置会影响开关的触发范围。

镜头放大或缩小时,也会影响到开关的开启与关闭。

如果你通过镜头制作了某些放大缩小的特效,可能会在不经意间开启镜头视野开关。

复合传感器

计数开关

1)基本信息

> 来自插件

Drill_EventMutiSwitch 物体 - 计数开关

> 简介

计数开关顾名思义,根据开关的数量,来控制门。

> 开关示例

开关示例在 机关管理层 中 计数开关 的介绍。

> 关卡设计示例

计数开关应用非常广泛,在大多数有门的解谜中,都有计数开关。

比如解谜:设计-脉冲开关 的门。

2)使用方法

计数开关需要在 开关事件 和 门/灯事件 中写注释。

开关事件中设置钥匙,在门事件中设置触发条件即可。

3)开关触发与事件页

一个最基本的注释如下图所示。

(条件符合情况决定是否开启独立开关)

事件页关系如下图所示。

事件页条件描述指令
1门关闭状态计数开关条件符合时,开A。计数开关条件不符合时,关A。
2独立开关A门开启状态无。

序列开关

1)基本信息

> 来自插件

Drill_EventSequentialSwitch 物体 - 序列开关

> 简介

序列开关对每个开关都有固定的要求。

如下图三个开关必须完全满足条件,才可点亮灯,只要任一条件不满足,立即关灯。

开关的顺序和开启/关闭状态被牢牢地固定,你可以以此来制作特定图形的解谜。

> 开关示例

开关示例在 机关管理层 中 序列开关 的介绍。

> 关卡设计示例

示例中有具体的解谜:设计-逻辑图形。

解谜设定为:按照前面两个图形,猜测第三个图形的形状,形状完全正确才能开门。

你可以去看看 ”14.鼠标 > 解谜设计-逻辑图形.docx” 中的 逻辑图形关卡设计。

2)使用方法

序列开关只需要在 门/灯事件 中写下面注释,但需要添加多个条件项。

指明对应开关事件的 事件ID、独立开关、开启/关闭状态 。

3)开关触发与事件页

一个最基本的注释如下图所示。

(条件符合情况决定是否开启独立开关,条件项可以添加多个)

事件页关系如下图所示。

事件页条件描述指令
1门关闭状态序列开关条件符合时,开A。序列开关条件不符合时,关A。
2独立开关A门开启状态无。

4)机制详解

以 机关管理层 的序列开关为例:

例子中,三个@可以切换四种颜色:蓝、绿、红、橙;

必须要求三个@ 分别为: 红蓝橙 才能开启

切换开关结构如下:(四个事件页的执行内容都一样,只是行走图不一样)

开关可以切换四种颜色,有三个这种颜色切换的开关。

这三个开关需要满足“红、蓝、橙”的顺序,那么对应的独立开关条件如下:

其中开关的蓝色状态是 ABC 三个独立开关都关闭,

所以事件247必须同时满足三个关闭的条件。

聚集开关

1)基本信息

> 来自插件

Drill_EventGatherSwitch 物体 - 聚集开关

> 简介

当聚集开关聚集的数量超过一定值时,可以触发独立开关。

> 开关示例

开关示例在 机关管理层 中 聚集开关 的介绍。

> 关卡设计示例

示例中有具体的解谜:设计-消除砖块 。

解谜设定为:相邻的方块接触后,方块粉碎消除。

你可以去看看 ”14.鼠标 > 解谜设计-消除砖块.docx” 中的 砖块事件设计。

2)使用方法

聚集开关可以直接复制示例中现成的事件。

3)开关触发与事件页

一个最基本的注释如下图所示。

(每个聚集开关绑定条件后自带聚集钥匙,相同聚集开关能相互作用)

事件页关系如下图所示。

事件页条件描述指令
1开关弹起状态聚集钥匙超过数量时,开A。低于数量时,关A。
2独立开关A开关按下状态无。

4)机制详解

> 聚集范围

相邻的硬性规定为:事件两两的十字距离范围相邻。

如下图,红色箭头的事件相互相邻,聚集数量为4,

而紫色箭头的与其他全部不相邻,聚集数量为1。

> 聚集数量设置

聚集开关的绑定条件中,可以设置钥匙数量条件。

聚集开关事件之间可以有不同的数量要求,

如下图,需要3个相邻的聚集开关,不会被点亮。

只要再加一个相邻的开关,就会被点亮。

> 多符号设置

聚集开关可以添加多个触发,

比如下图的 ”圆形聚集” 和 ”方形聚集” 可以在同一个聚集开关身上。

但是注意,由于有两套激活方式,这也使得多符号聚集开关,有4个状态(事件页):

都没被点亮、都被点亮、只点亮了圆形、只点亮了方形

这就需要与 序列开关 组合使用才能实现,如下图注释。

5)关闭聚集开关

常规情况下,事件被 暂时消除/彻底删除 后,将不再具备聚集效果。

但置空的事件并没有被删除,所以置空事件仍然能聚集触发。

比如在消除砖块关卡中,关卡需要能够被重置,事件不能完全删除了,所以只能置空。

因此,在这种情况下,

需要在置空的事件页,添加注释:“=>聚集开关 : 关闭聚集开关”

6)延迟触发

聚集开关插件中,有一个延迟触发时间的设置:

之所以有这个设置,是因为如果时间为0,聚集开关触发的”太快了”。

比如,消除砖块的关卡设计:

常规思路中,如果我拖动蓝色的蝴蝶结,那么这个方块会下沉到最底部。

但是,下沉的沿路旁边有个蓝色蝴蝶结,

如果聚集开关是立即触发,那么在两个蓝色蝴蝶结接触的一瞬间,它们就粉碎了。

这显然与最初的设计思路背道而驰了。

所以,需要设置延迟的触发时间,确保蓝色蝴蝶结完全停稳后,再判断是否聚集触发。

消除砖块关卡中,触发延时时间 需要固定值为2。因为要实现下面的 细节一 功能。

7)消除砖块具体配置细节

细节一: 玩家鼠标拖移时,如果接触到了方块,那么就消除。

鼠标持续拖移时不能越过能消的方块。

细节二: 如果是物体自身”下落”的情况,两个相邻方块不会被消除。

上述的特殊规则,聚集开关插件 和 移动路线 要进行延时控制。

实现细节一: 拖移方块时(左右移动),每拖移一次,移动路线等1帧。

方块下落时(上下移动),移动路线不等待。

实现细节二: 触发延迟需要至少1帧。结合细节1,则需要等2帧。

不能等3帧或3帧以上,等多了 细节一 反而来不及消除了。

通过这种方式,就能实现下落时不消除,而拖移时会消除的效果了。

如果移动路线不强制等待这1帧,鼠标一直拖移,就说明物体一直没有静止下来,那么聚集开关就不会被触发。

注意,消除砖块关卡的下沉过程判断,对帧数要求非常严格,因此不能开“是否优化每帧计算量”,需要通过插件指令手动关闭设置。

其它

性能影响

开关中,有的开关消耗的多,有的几乎没有消耗。

不过,有一点可以确定,开关数量越多,性能消耗越大。

因此,尽可能保证一张地图中开关数量<150个即可。

示例中的设计关卡,一张地图直接承载了六个关卡的开关数,未出现明显的卡顿。如果你要设计关卡和开关,建议设计成一张地图一个关卡,这样就完全不需要担心性能问题了。

通用写法

通用写法: 指为了实现某些功能,专门设计编写出来的事件指令集合。

有时候点开一些 开关事件,你会发现里面的指令层层嵌套,难以理解。

别担心,这些写法都是固定写法,无论写法变成什么样,他们的特点和格式都是固定的。

可以见章节:

5)通用写法 - 脉冲通用写法

5)通用写法 - 多状态通用写法

物体id规范

使用插件指令,获取 事件id、玩家队员id、载具id 时。

经常会提及找不到时返回-1,若为玩家则返回-2。

这个插件指令的表示方法并不是零散的,而是统一的设定,如下:

类型\id值大于00-1-2
事件id(event_id)正常id值(1表示地图里id为1的事件)无效找不到对象表示玩家
玩家队员id(follower_id)正常id值(1表示玩家身后第1个队员)无效找不到对象表示玩家
载具id(vehicle_id)正常id值(1表示小船,2表示大船,3表示飞艇)无效找不到对象表示玩家

由于玩家是一个非常特殊的存在,能同时具备事件、玩家队员、载具的相似功能,

所以这里插件指令获取id值时,如果是玩家,都按-2表示。

从零开始设计(DIY)

双控开关/三控开关

1. 设置一个目标

2024年2月2日,作者我终于完成了3.50的更新,把 触发的本质 的大概念全部写完理清了。然后作者我躺床上睡觉的时候,顺手按了一个开关。

突然,我感觉这个开关好像不简单,两个开关,控制一个灯?

于是作者我跑去百度搜索了 ”双控开关”。

分析后,用现有的插件能做,但设计思路好像有点复杂。

啊,于是作者我不小心又开坑了,烦哎。

2. 结构规划/流程梳理

双控开关/三控开关需要实现一个基于用户的效果:

只要切换任意一个开关,那么灯一定会对亮暗进行切换。

百度百科里面介绍的是现实电路的设计,如下图。

可以看到,电路的设计 对于 我们要设计的触发,没什么帮助。

这里简单分析一下 事件页机制 关系,先把 双控开关的开启/关闭 与 灯的亮/暗 列出来,再看看如何构建设计思路。

双控开关与灯的关系表格入下:

开关1开关2

三控开关与灯的关系表格入下:

开关1开关2开关3

现在,我们手里有:

Drill_EventMutiSwitch 物体 - 计数开关

Drill_EventSequentialSwitch 物体 - 序列开关

如果用序列开关,要么满足全部条件,要么满足固定数量的条件,而这里双控开关就有4个条件,看起来不好弄。

如果用计数开关,看起来似乎能用上。

于是,在双控开关的表格里面再加一列:

开关1开关2开关为开的数量
0
1
1
2

在三控开关的表格里面再加一列:

开关1开关2开关3开关为开的数量
0
1
1
1
2
2
2
3

可以看到 计数开关 的数量,能够完美匹配灯的亮暗。

偶数全暗,奇数全亮。

这就可以设计双控、三控、甚至N控开关了。

3. 准备素材

最初作者我考虑直接用按钮设计就行了。

但后来感觉不太对,因为现实生活的灯开关,很少有那种 按钮式开关。

从触发设计上看,按钮式开关 和 闸刀式开关 没什么区别。但从外观上看,玩家感受区别还挺大,属于两个完全不同的机关。

所以作者我重新画了闸刀开关。

4. 双控开关设计

开始添加事件前,

留意一下 脚踩的开关 和 手拉的开关,触发方式不太一样。

脚踩的开关,可能要用到重力开关;

手拉的开关,直接执行开启独立开关即可。(第二页则执行 关闭独立开关)

然后,在事件页第二页添加 计数钥匙。

给双控开关的灯,添加计数条件即可。

在游戏中测试,可以看到功能已经实现:

只要切换任意一个开关,那么灯一定会对亮暗进行切换。

5. 三控开关设计

前面提到了双控开关,等于1就能实现了。

但是,三控开关,要等于1还要能等于3,但计数开关只能绑定一个条件。

为了合并两个条件,

这里可以用序列开关,设计A1+A2任意一个条件满足即开。如下指令。

序列开关可以设置 要求全部满足,也可以设置 要求指定数量满足。

“满足数量 大于等于[1]” 即为 “任意一个条件满足”。

在游戏中测试,三控开关也实现了:

只要切换任意一个开关,那么灯一定会对亮暗进行切换。

设计“独立开关A+B都为ON”的出现条件

1. 设置一个目标

2024年2月6日,作者我使用插件 “物体-独立开关” 的时候,

发现了一个常用指令 <<出现条件>> 中,非常反人类的设定。

“与独立开关设置互斥” “只能以第一个注释为准”。

如果我想要多个独立开关都为 ON,怎么办?

于是作者我跑去看了一眼脚本,

哦,独立开关的确只能设置一个,本身底层设定就只能写一个……改不了。

作者我看看有没有什么其他的方法。

2. 结构规划/流程梳理

本来作者我打算开新坑,

但转念一想,不对,这个插件我好像已经写过了。

没错!就是插件 物体-序列开关 。(可见 序列开关

Drill_EventSequentialSwitch 物体 - 序列开关

这个插件能够添加任意多个 固定条件项,全部满足才能开启独立开关。

3. 事件编写

在事件页第一页添加下面的指令,

第二个事件页,使用 序列开关 指向的 独立开关C。

即可实现 “独立开关A+B都为ON” 的出现条件功能。

自动关闭的门

1. 设置一个目标

2021年12月16日,作者我正在建设建筑管理层,突然发现默认图块中,连一个像样的门都没有。

于是作者我想设计一个门,门能够被玩家打开,但当玩家离开一定距离后,自动关闭。

(只考虑玩家能打开,事件不能开门。事件开门会导致情况更加复杂。)

2. 结构规划/流程梳理

这里将想法描述为两个触发:

玩家开门后,门保持打开状态

玩家离开门一定距离后,自动关闭(回到开门前的事件页)

首先,开门过程就用正常的开门指令即可,玩家接触后,门播放不同朝向(表示开门动画),最后处于朝上状态。

离开一定距离后自动关闭,可以判断需要用到 接近开关

使用插件:

Drill_EventAutoTrigger 物体触发 - 固定区域 & 玩家接近 & 条件触发

3. 开门指令

开门指令如下:

开门前处于待开门状态,开门后,处于开启状态。

注意,开门有两种情况,从里面出来和从外面进去;

因此门必须固定朝向,避免从里面出来时,门事件朝向玩家,造成行走图突然改变。

需要播放朝向时,再 关闭固定朝向 。

在游戏中测试,确保从里面从外面都能开门即可。

目前事件页关系如下:

4. 关门指令

a)关门动作

新起一个事件页3,播放关门的动作,动作播放完后,回到事件页1。

事件页3用独立开关B,执行完后,关闭A(开门状态)和B(关门动作本身)。

目前,事件页跳转关系如下:

想要关门,开启事件的 独立开关B,就能立即关门了。

b)关门触发时机思路

接下来,需要使用接近开关实现:

玩家在门前,不开启B,玩家离开门后,开启B(关门)

注意,由于 接近开关 中只提供了 接近开启+离开关闭 的功能。

没有提供 接近关闭+离开开启 的功能,所以这里需要想办法反转一下。

c)关门触发

先添加独立开关C的条件,独立开关C,是常规的: 接近开启+离开关闭 。

也就是说,只要C关闭了,就立即开启B。即可实现离开关门动作。

那么,开一个 并行处理 的监听,只要C一关,开启B,就实现了。

这个状态,在开门后持续并行监听即可。

这样,事件页的功能就完成了,如下:

小爱丽丝拟态怪

1. 设置一个目标

2023年12月18日,作者我在写多状态开关的文档,突然发现其实现有插件能有一些特别奇妙的组合。

于是,作者我打算设计一个,每次被看见一个都是完全不同形态的小爱丽丝。

比如,第一次被看见时是个正常的小爱丽丝,第二次看见是其他的东西。

2. 结构规划/流程梳理

这里将想法可以拆解为:

镜头看见时;

第一次、第二次、第N此看见时变化。

根据描述情况,会用到下面的功能:

镜头视野开关多状态开关

根据 多状态开关通用写法 的知识,

我们知道镜头视野+多状态开关通用写法,能够实现效果。

3. 使用现有的机关功能组合

那么,复制一个多状态开关。

如下图,将 多状态开关 原连接的重力开关触发 修改成 镜头视野开关 的触发即可。

在游戏中测试,

看一下事件,然后远离,就能发现事件切换了。

原设置为 重力开关,要求玩家踩一次才会开启独立开关A,然后多状态变化。这里将重力开关换成镜头视野开关,触发条件就由”踩一次”变成了”看见一次”。

4. 结构改进

拟态怪变成小爱丽丝后,玩家应该能够和小爱丽丝进行对话。

但由于当前的组合 设置为 并行处理,功能被占用了。

因此,需要考虑另起一个事件专门控制 拟态怪 变化,

而拟态怪本身能够直接进行对话。

控制拟态怪的事件,

写法要将 控制本事件 改成 控制指定事件 。

而拟态怪本身,直接写对话即可。

注意,多状态开关的独立开关条件为 P1、P2、P3 。

这样就完成了拟态怪的功能了。

你可以去示例中 机关解谜管理层 看看实际效果。

拟态怪也可以是门,实现第一次看见为关闭状态,第二次看见为开启状态。

贡献者

暂无相关贡献者

页面历史

暂无最近变更历史