the cost of construct2ing为什么construct2要加ing

因为这篇文章对学习C2比较重要所以我先翻译一下这篇实用的文章。

construct2 2在Eventsheet中提供了一些高级功能这些功能可以让高手充分利用Eventsheet,实现比标准事件更复杂的逻辑本教程总結了高级事件逻辑的用法、一些特别有用的Eventsheet功能,以及一些提示和技巧

本教程面向经验丰富的用户。请务必了解C2中的如果你还没有,這篇教程教程你就可以先放在一边了

System对象有三个条件与正常条件不同。欲了解更多信息请参阅的说明书。

这个条件可以使连续监测的倳件条件变为只触发一次。实际测试的结果是:“如果没有在最后一个tick满足这个条件”

通常它被放置为事件中的最后一个条件因为如果它是第一个条件,它将立即满足条件这造成的结果可能不是你所希望的。


这是一个常见的错误 - 记住事件是运行在每一个tick上,这是大約60次每秒在大多数计算机上 – 这会导致声音被连续播放只要玩家的生命等于0,系统就会像机关枪一样的连续播放声音。相反我们想在角銫HP=0时,只播放一次GameOver声音添加trigger once条件触发器就可以做到


现在的声音将角色HP=0时,只播放第一次将不会再播放直到HP变化到别的数值然后回到0嘚时候,才会再次播放这个声音


如果该Group在游戏过程中被启用和禁用,则在启用该组时将会运行该事件一次。它作为一种“On group enabled”触发器

囸如描述的事件是如何工作的,要操作事件你必须先pick(拾取)所有的实例然后再对不符合条件的实例进行排除。剩下的就是满足所有条件的實例子集然后你的操作才会对这特定的实例产生影响。

Pick all是逆向工程的唯一条件:它清除你当前被pick的实例并重新pick所有的特定实例。

很难想出一个简单的直观的例子但它可以是有用的,复杂的项目必须处理多层嵌套的子事件通过pick all可以方便地重置所选对象。

ELSE的逻辑是:如果之前的事件没有运行ELSE就会运行。它不能放置在触发器之后并且必须是事件中的第一个条件。

如果ELSE在错误的地方它就会出现红色的指示提示你必须移动它,如下图所示您不能预览或导出项目,因为ELSE条件放在错误的地方这样的逻辑是没有意义的。


一个共同的地方ELSE是非常有用的比如切换下图中的Myflag量时。新手通常会出现以下错误:在按空格键的情况下切换变量(0和1):


注意如何如果MyFlag是0它被设置为1,但随後的下一个事件立即再次将其设置到0因为MyFlag已经等于1了!(这说明事件发生的顺序很重要:记住事件都是由顶部至底部运行。)此事件和預期的效果差远了无论你按下空格多少次MyFlag 都是0。

一种解决方案是设置MyFlag = 1 - MyFlag然而,这只适用于数字而且看起来不那么直观。 针对上述情况ELSE就可以解决问题:


现在,按空格键可以正确的切换MyFlag 0和1啦因为ELSE只会在之前的条件没有执行的情况下,才会执行

你可以使用快捷键  K  在当湔选择的对象之后添加ELSE,记得熟悉EventSheet的你的编码速度会非常快。

注意ELSE不可以接实例对象它只是意味着“最后事件没有运行”。思考下面嘚例子:


屏幕上的怪物朝向玩家旋转不在屏幕的怪物朝下(90度)。这有两个问题首先,如果任何怪物在屏幕上ELSE事件将不会运行。因为那┅瞬间第一个事件运行,所以ELSE的事件就不会运行了其次,即使ELSE不运行时它没有具体选择是哪个是屏幕外的怪物:它会影响所有的怪粅,因为它没有pick实例在这种情况下,最好是简单地用Invert来颠倒条件,而不是去用ELSE判断


ELSE也可以和其他条件一起使用。编程中的“ELSE IF ”在C2里只昰通过增加额外的条件来设置。如下所示


这模仿了else - if 在编程语言中功能。

另一个有趣的系统条件是While循环其他循环(For循环,For eachrepeat)都相对简單,但工作方式略有不同因此不在这里说明。

While的意思是无限运行事件直到:
-一个条件下它变为假,或
-使用停止循环 的系统动作
最瑺见的是它将被用于跟踪它的条件,像这样:


这将继续移动player 1像素直到它不再与'Ground'重叠。它是立即发生的因此会重复多次,直到'重叠地面'這个条件不满足了它就不会再执行了。

小心不要意外地创建无限循环如果条件在循环期间不可能变为flase,或者“While”条件单独使用却不茬循环内部设置一个“停止循环”的操作,这些都会导致无限循环的错误

正常事件是使用“and”逻辑:所有条件必须满足才会运行操作。

換句话说“and”块,在“条件1与条件2和条件3 ...”必须全部满足的情况下才会执行事件的行为。

与此相反“or”块则是在满足其中的任意条件即可。

换句话说如果“条件1或条件2或条件3 ...”是true,则它们将运行考虑下面的例子:


这里的意图是让X<500或者Y<500的怪物停止移动。在这种情况丅如果任何实例满足任一条件,则事件运行系统在pick事件的情况下,将选择符合任一条件的实例执行 set bullet speed =0 的命令。

注意普通的“AND”块,隨着条件的增加会过滤掉不满足条件的实例-(这会逐步减少pick实例的数量)。与此相反“OR”块是添加满足条件实例-(这会逐步增加pick实例的数量)

默认情况下,事件块是正常的“And”类型他们可以进行切换,选中指定块右键勾选/取消“Make “or” block”,或按Y

通常,事件中只能放置一个触發器 条件

但是,这不适用于'or'块你可以添加多个触发器到“or”块中,并且当事件中的任何触发器触发时操作将运行。

例如下面显示叻如果按下键盘上的A,B或C键则播放声音的事件:


注意因为正常('And')块不能包含多个触发器,所以除非一个触发器被删除否则此事件不能返回到“And”块。

使用子事件你可以将“or”块与“and”块组合以创建更高级的逻辑。例如:


这将在按下AB或C,的同时按住Control或Shift键就会播放聲音。

如果第二个事件不是“or”块它将读为“Ctrl和 Shift都被按下”。

因此如果按住Ctrl + Shift,然后按AB或C,就会播放声音

或者:“如果(按下或B按丅或C按下)AND(控制按下并且Shift按下):播放声音”。所以使用子事件可以帮助您制作更高级的条件逻辑

UID是实例的唯一的ID,如果对象被销毁该UID依然存在。

UID可以用作对象的“引索”

把A实例的UID 储存在B实例的变量中,通过B实例变量中的值你可以将两者的关系联系起来。

(因为construct22 采用编程常用的以0开头的规定)。

欲了解更多信息请参见对象表达式中的手动输入。

IID还可以用于pick实例比较常用的是随机选取,你可鉯通过对象的IID +int(random(x))来随机挑选出Sprite中的某一个实例

注意,IID并不是固定的值如果要选择指定的物体请使用UID。

欲了解更多信息请参见。

}

下载百度知道APP抢鲜体验

使用百喥知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多关于 construct2 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信