花核颤抖肿胀绳子 道具:触发事件编辑器解析

来源:百度文库 编辑:九乡新闻网 时间:2024/05/03 06:58:42
时间:2010-09-01 22:18来源:地精研究院 作者:551155 点击:  421次
首先解释TRIGGER的概念,在详细解释前先看这么一个例子:有一个花园,里面有一只狗,除了这只狗的主人以外,任何其他人进入花园就会被狗咬。 不难看出这个例子一共由2大部分组成
首先解释TRIGGER的概念,在详细解释前先看这么一个例子:“有一个花园,里面有一只狗,除了这只狗的主人以外,任何其他人进入花园就会被狗咬。”
不难看出这个例子一共由2大部分组成,1个是参与者,1个是事件。
先看看参与者是哪些,也就是如果要让例子里面的事件发生,必须有哪些东西。首先,事件发生的场地是花园,其次事件的主角是人,最后配角是狗,当然主角配角什么的各位也不必搞那么清楚,只要知道这个事件的参与者是花园,人,狗就可以了。
接着是看看发生了什么事件,分几个步骤,首先如果没有人进入花园就什么也不会发生,那么整个事件的开端就是一个人进入花园。接下来即使有人进入了花园,但是如果那个人是狗的主人,那么狗也什么都不会做,所以发生“狗咬人”事件的必要条件就是进入的人不是狗的主人。最后,如果以上2点都满足了,那么进入的人就会被狗咬啊那个被狗咬(狗:嘿嘿,没错,被咬~),所以这个事件的结果就是狗咬进入的人。
通过以上的例子,大家应该看出来,一个事件是由参与者来执行的,而事件本身是由开端,必要条件,结果3部分组成的。
好了,回到上面的例子,在WE(World Editor-世界编辑器)里面,一个事件通常被成为一个trigger(触发),而参与事件的东西称做object"对象“而事件的开端被称为event“开端”,必要条件称为condition“条件”,事件结果被称为action“动作”。那么现在上面那个例子就可以写成这个样子了:
events
一个人进入花园
conditions
进入的人不是狗的主人
actions
狗咬进入的人
现在根据上面这个改造版的事件来说明一个trigger各部分的具体含义,首先在events中出现了“人”和“花园”2个object,在WE中,类似“人”这种object,被称做unit“单位”,在魔兽中,步兵啊,生命之树啊,恶魔猎人啊,统统属于unit这个类别。而说到花园这个东西,首先要明白“人”进入的是1个区域,而这个区域在以上例子里面就是这个花园,所以花园,峡谷,房间或者什么都没有就一片空地等类似的让unit可以enter“进入”的玩意,被叫做region“区域”。
所以上面的event现在可以写成:
a unit enters REGION_花园(一个单位进入“花园”)
其次来看看condition:“进入的人不是狗的主人”,这在WE里面是一个单位的判断,也就是说看看entering unit“进入的单位”到底是不是狗的主人这个特定的单位,那么这个condition就可以写成这样了:
entering unit not equal to UNIT_狗的主人(进入的单位不是“狗的主人”)
最后来看看action部分——“狗咬进入的人”,那么这句话的具体含义就是给狗下达了一个命令,这个命令的目标是“进入的单位”,命令的内容是“攻击”。所以这个action应该写成这样:
order UNIT_狗  to attack entering unit(命令狗攻击进入的单位)
最后把以上3部分综合起来,就成了这样的:
events
a unit enters REGION_花园
conditions
entering unit not equal to UNIT_狗的主人
actions
order UNIT_狗  to attack entering unit
那么让我们在WE里面实现上面这个trigger吧~~
在WE里按F4打开trigger编辑面板,把Initialization-Melee Initialization这个trigger里面除了的Melee game-Use melee time of day(for all player)这个actions以外的所有其他actions全部删除,那些actions是为melee设计的,在目前我们要做的地图里面没用。接着左上方点白色方块图标来创建一个新的trigger。
新建好的trigger会自动命名为untitled trigger 001,你可以通过点击—F2的方法修改名字。点击上中的红旗(不要告诉我你找不到.很好找的),创造一个新的事件,然后选择unit-unit enter regions,这时候会出现一个对话框。
我们要选择一个区域,这个区域相当于“花园”,点击红色的region,接着在跳出的面板中点击select a region,接着会跳回地形编辑界面,按一下空格键使区域面板左上的那个方形按钮处于按下的状态,按住鼠标左键并且拖动鼠标在地图上拉出一个方形的框,然后放开鼠标左键,还可以点击四个角拖动进行放大缩小。
这个时候一个区域就创建好了(直接打开区域面板的方法是在地形编辑界面中按R),按下空格使区域面板左上的那个方形按钮处于弹起状态,点一下刚才创建的区域区域,这样就在event中选定创建的区域了,接下来连点2次OK,这样这个trigger的enevt就创建好了。然后在地形面板中按R,双击刚才选定的区域,将之改名为“HuaYuan”(注意,region的名字不能输入中文)
这时候所创建的event应该是:
events
Unit - A unit enters HuaYuan
这里的只是一个识别符号,没有特殊意义,可以不去管它。
接着是condition,在trigger面板中按鼠标右键,选择new coditions,然后选择unit comparison,接着点击triggering unit,在下拉菜单中将之改为entering unit。
点击equal to将之改为not equal to
点击value,再点select a unit,在出现的单位面板中选择山丘之王,在地图上点一下创建一个山丘之王(注意,按ctrl+R打开查看region的功能,确保山丘之王没有被放在刚才创建的region-"HuaYuan"里面),然后按下空格关闭创建单位,再点一下创建好的的山丘之王,这样就在condition里面选中山丘之王了。
连续点OK2次,这时候的condition应该是这样的:
conditions
(Entering unit) Not equal to 山丘之王0000
山丘之王后面的数字是单位的编号,不用去管它。这时候conditions也创建完毕~~呼呼,好累,打字手打肿了………………
最后只有actions啦,有了以上的经验,我就不那么详细介绍了,过程是这样的:new action - unit - issua order targeting a unit - order “幽灵狼”(和山丘之王创建方法相同,只不过创建在“HuaYuan”内而已) to Attack Entering unit。这样创建好的action应该是这样:
actions
Unit - Order 幽灵之狼 (等级1) 001 to Attack (Entering unit)
最后,在unit editor里面把山丘之王的名字改成“主人”,幽灵狼的名字改成“狗”,再把“HuaYuan”这个区域铺上草,在区域外面放些unit就ok啦(打开unit面板的快截键是U),按ctrl+F9测试一下吧~~,怎么样除了“主人”以外的所有unit进入“花园”都要被“狗”K吧。遇到什么问题参照给出的演示自己修改吧~
上次比较详细的说了下trigger的组成等等,也做了一个最基本的trigger,所以大家现在对trigger应该有了一个大概的概念,从这次开始,以后将使用很多例子来具体说明一些命令的作用,各位行行好,我写的这么辛苦,各位好歹动手做做,膜拜膜拜~~
接下来我们将会从一个最简单的trigger ability做起,再一步一步的将之复杂化,在这个过程中来看看各个命令的具体作用,至于为什么要以trigger ability作为例子,因为trigger ability是学习命令的最简单快截的途径,至少我的经验是这么告诉我的。
那么开始咯,新建一个trigger(方法上次已经说明了),然后暂时放在那里不去管他,我们先做些其他的必要准备。这里需要讲讲trigger技能的原理,其实trigger ability就是一个或者多个trigger共同实现的一些效果而已,上次已经说了trigger有3个组成部分,其中引发trigger的部分是“开端”,而在一个trigger ability中,事件的开端就是某个单位使用了一个特定的技能,这个“特定的技能”由于作用不过是用来引发事件而已,所以一般来说是没有任何效果的(增加减少HP,迟缓等效果),而WE本身没有提供此种什么效果都没有的技能(关于trigger专有技用channel以后再说明),所以我们要自己做一个这种技能,那么怎么做呢?
分下面几个步骤:
1 确定将要制作的trigger ability的目标类型,分3种目标:unit“单位”,point“点”或者no targret“没有目标”。
2 在ability editor里面找到和trigger ability拥有相同类型目标的现成的技能,比方说我要做的trigger ability目标是一个点,那么我就找cloud of fog(乌云)这个技能,如果是一个单位,就找thunderbolt(风暴之锤)这个技能。找到需要的技能以后,copy这个技能,再粘贴到自定义技能里面去(当然如果你确定这个技能除了做trigger ability以外没有其他作用,也可以直接在原技能上改)。
3 删除粘贴后技能里面有关伤害,特殊效果,以及视觉效果方面的所有数据,然后把mana消耗,施放范围施放时间间隔等改成需要的数目。
完成以上步骤以后就做好了一个为trigger ability专用的技能了,我们姑且叫做这种技能为基础技能(自己取的,免得以后麻烦)
那么按照以上步骤开工吧,由于我们将要制作的trigger ability的目标是1个点,所以我们用改过的clould of fog(乌云)来做基础技能,注意在技能改的时候将area of effect(效果作用范围)改成450,这样在游戏中显示trigger ability的作用范围就是半径450的圆了,mana cast(释放费用)和cooldown(释放时间间隔)改成0方便测试用。
现在准备工作就做好了,那么我们回到开始时创建的那个空空的trigger上面,刚才已经说了trigger ability是由一个特定技能引发的1个或者多个trigger共同实现一些效果,所以在trigger ability里面event自然就是a unit finishes casting an ability(一个单位结束释放一个技能)为什么是结束释放呢?因为有些技能的释放时间有一定长度,而且从一个技能开始释放到结束释放间隔的时间要受单位释放技能的动画播放时间影响,所以如果用a unit begins casting an ability容易造成连续启动同一个trigger的bug。这里要说明一下的是,由于没有安装WEU的同志们没有get unit's last order target point(取得单位最后一个命令的目标点)这个命令,所以这些同志请使用a unit is issued an order targeting a point(1个单位发布了一个以点为目标的指令)代替a unit finishes casting an ability,当然这样会造成condition有所不同(一会儿会说明)以及会有少许bug,但是这也是没有办法的事情了,想弥补就到置顶帖里面下WEU去吧~~
接下来是condition,因为如果不对触发这个trigger的命令类型做限制,那么只要有单位释放技能或者有单位发布了一个以点做为目标的命令(比方说move)这个trigger就会被触发,出现的情况就是,走路也会放技能¥%%·#!#¥%,这是当然不被允许的,所以第一个condition就是对命令类型做出限制,对应使用a unit finishes casting an ability的情况的conditions是Ability being cast Equal to 召雷(被释放的技能是“召雷”),这里在召雷这个位置上,选择的是先前创建的那个基础技能,这样就把触发trigger的技能限制为只能是这个基础技能了,而对于使用a unit is issued an order targeting a point的情况condition有所变化,由于event是个order的event,所以condition也应该是判断order的condition,所以应该是Issued order Equal to Order(cloudoffog)(发布的命令是“cloudoffog”)关于“cloudoffog”,在这个condition里面是个string“字符串”(由字和符号组成的东东),释放不同技能的字符串是不相同的,具体查看的方法是在ability editor里面技能数据中Text - Order string - Use/Turn on后面对应的字母就是了。而这个condition的作用和上面那个是一样的,作用就是限制触发trigger的命令类型。那么现在的event和condition应该是这样的:
events
a unit finishes casting an ability
conditions
Ability being cast Equal to 召雷
或者
events
a unit is issued an order targeting a point
conditions
Issued order Equal to Order(cloudoffog)
如果不是请对照改正
最后就是action部分了,在这部分我们要做的,就是添加一些视觉效果在你释放技能的那个点上。由于技能名字都叫召雷了,自然效果里面少不了雷啦,所以我们用了这样一个action,先选择Action - Create Special Effect At Point,然后按照以下格式设置create a special effect at get last order target point of (casting unit) use abilitys\spells\human\thunderclap\thunderclapcaster.mdl(在释放技能的单位最后一个命令的目标点上产生一个雷霆一击“释放者”的特殊效果)在abilitys\spells\human\thunderclap\thunderclapcaster.mdl这一栏点进去还有很多其他效果,可以自己试试换个效果感觉怎么样。对于enevt用的是order的情况,只需要把get last order target point of (casting unit)换成target point of issua order就可以了。那么到此,视觉效果就设置好了,但是只是好看的技能是没有用的,还要对周围敌人产生伤害才行啊,所以还要加入这么一条action,先选择unit group,再进行以下设置pick every unit in(units within 450.00 of (get last order target point of (casting unit)) matching ((matching unit0 belongs to an enemy of palyer 1 (red)) equal to turn)(选取释放技能的单位发布的最后一个命令的目标点周围450半径范围内的所有敌方单位)再在下面出现的loop - action上点鼠标右创建个新action,这个action的内容是这样的,set lit of (picked unit) to ((life of picked unit) - 100)(设置被选取的单位的生命值为被选取单位当前的生命值-100)
对于enevt用的是order的情况,只需要把get last order target point of (casting unit)换成target point of issua order就可以了。
这样,一切都做完毕了,最后一步,在unit editor里面给随便一个英雄安上那个基础技能,好了,进游戏测试一下吧~~,当然首先要在地图上放上那个英雄和一些敌人啦。
不明白的地方对照演示去修改吧~~