|
本帖最后由 yxxiaobin 于 2015-12-17 19:54 编辑
几年前就有人问过巨像武器的实现原理,当时也曾想写一篇教程出来。但是我组织语言的能力实在很差,写出来发现,如果抛开已有的知识,只是从文字上去理解,我自己都不知道自己在说些什么,所以反复写了两次,最后都删掉了。要不发出来,可能会有人误以为我的语文是和体育老师学的(尽管我语文是和数学老师学的)。最近又有人提出这个问题,我觉得几年来不断的读书让自己的写作能力稍微提高了一些,于是又尝试些了这篇教程,虽然最后自己看了两遍还是不知所云,但是勉强发了吧,不足之处,还请大家多多指正。
言归正传。
作为武器来讲,不同的模式,学习难度也是不同的。我个人认为,像机枪兵一样的即时单体目标武器是最简单的,像坦克一样的即时范围武器排第二,如果范围伤害是靠搜索效果完成,则比靠溅射完成更复杂一点,第三则是像导弹塔一样的投射武器,第四就是光束武器了。作为光束武器,难度也不是一样的,像执法者这样的就相对简单些,如果是凯瑞甘那种闪电链、虚空辉光舰一样的持续伤害则稍难,巨像这样的移动光束武器恐怕是最复杂的一种了。
当然,难者不会,会者不难。只要理清移动光束武器的内在联系,制作一个这样的武器也不是特别费事。下面以巨像的热能射线枪为例做下介绍。
热能射线枪的武器部分没什么特殊,只是需要注意,这是一个引导武器。武器显示效果是最终的伤害效果,直接调用效果是一个名为Thermal Lances(set)的集合效果,里边集合了3个效果,分别是左射线(Thermal Lances (Create Persistent Backwards)),右射线(Thermal Lances (Create Persistent Forwards))和攻击友军伤害(Thermal Lances Freindly CP)。
攻击友军伤害:因为巨像的武器是不会对友军误伤的,正常的效果树下不能给友军套用伤害效果,所以当强制攻击友军时不会产生伤害。为了消除这一缺陷,特意加了一个持续性效果调用两次伤害效果来伤害强制攻击的友军单位。
左射线和右射线:如果直接根据名称翻译就是“热能射线枪 创建持续性倒退”和“热能射线枪 创建持续性前进”。这两个子树没有什么本质不同,只就“热能射线枪 创建持续性前进”做一下解释,以下简称右射线。
首先说一下右射线的实际效果部分,即效果行为树。右射线是一个创建持续性效果,作用有两个,一个是决定引导时间,一个是靠持续性偏移序列决定射线移动路径(从右到左)。持续性偏移效果每次都会调用同一个,名为Thermal Lances (Search Backwards),是一个搜索效果,以下称为“右射线搜索效果”。右射线搜索效果搜索符合要求的目标,然后给它们应用一个创建持续性效果(Thermal Lances (Create Delay Persistent)),最终调用伤害效果(Thermal Lances (Damage))。这里不直接调用伤害效果,目的是利用创建持续性效果延迟给予搜索目标伤害,以便和演算体合拍,否则在视觉上就是单位已经受伤,但是射线离它还有一小段距离,这就比较怪异了。根据上边的分析,可以了解右射线的效果行为树的运行原理:右射线根据持续性偏移序列会形成一个从右到左的路径,在这个路径上反复调用右射线搜索效果,然后给予目标伤害,就好像伤害效果沿路径前进一样。这样就实现了右射线的实际效果。左射线只是持续性偏移序列是反的,原理则一样。
然后说一下右射线的演算体部分。一般的武器都有一个动作演算体,光束演算体通常是这个动作演算体创建的。但是热能射线枪的动作演算体只是用于暴露攻击者而已,左右攻击光束是分别响应左右射线的搜索效果创建的。因为搜索效果会反复调用,为了避免重复创建射线,演算体加入了一个条件:cap 1,也就是说同一效果树节点下只允许有一个实例,如果上一个演算体未销毁,则下一个演算体就不能被创建。事实上这个在巨像武器这个特例里,一直都是使用同一个演算体的,但是如果你把位移器设的很快,光束到达目的地后光束就会被摧毁(原理下边会说),这样当再次调用搜索效果时,就会创建一个新的光束演算体,这样感觉射线就会是断断续续的,而不是一条射线扫过去的样子。光束演算体的发射主体使用了一个部位演算体,分别指向了巨像的两个武器附着点,这样光束就能分别从左右武器口发射出来了。如果你改动这个部位演算体,可以让光束从巨像的其他部位发射出来。下边这个是移动武器的重点了:光束演算体的轰击主体使用了一个特殊类型的演算体:位移器(简中版翻译“位置(移动器)”),名字是Colossus Attack Impact Site,并且在光束演算体的开启字段,有一条很关键的消息“移动 目标:ColossusAttackImpactSite”,这样两处设置就会让光束追着指定的位移器移动了。
位置(移动器),这是一类能产生位移的演算体。它的几个关键字段含义如下:
开启,这个和其他演算体含义基本相同。里边只需要注意一个关键消息:“设置移动”。也就是定义移动的目标点。
速度,指位移器的初始速度。
速度最大值,指位移器的最大速度。如果这个值大于初始速度,会根据加速度值逐渐加速到这个值。如果小于初始速度,会根据减速度值逐渐减速到这个值。
加速度和减速度,位移器加速和减速的快慢,值越大,速度变化越快。
在热能射线枪的位移器中有3条消息,一条是让该演算体在搜索效果发生时创建自己,一条把自己的移动目标点设置到搜索效果的位置,最后一条就是位移器到达目标后,会向光束演算体发送消息使之摧毁。但是实际上位移器的移动速度是跟不上搜索效果的前进速度的,所以光束演算体不会被反复摧毁创建(上边提到了,光束演算体里有cap 1条件),只有到最后一个搜索效果发生后,路径结束,光束演算体才会逐渐追上它,然后通知光束自毁,光束自毁了,位移器丧失了支架,也就跟着自毁了。这就是为什么光束虽然是响应搜索效果创建的,却不会和搜索效果一样重复出现。
热能射线枪有轰击演算体,每个光束带有一个,轰击演算体由光束演算体创建,主体也是位移器,所以也会跟随位移器一起移动。这样看上去就像是光束在地上打出的火花一样。
根据上边的分析,可以看出,当第一次调用左/右射线搜索效果时,左/右光束即被创建,同时被创建的还有它们的位移器。当后续每次调用搜索效果,位移器都会重新指定目标点为搜索效果的发生处,然后朝向目标点移动,光束演算体目标绑定在位移器上,会跟着位移器一起移动,当位移器移动到最后一个搜索效果的位置时,所有演算体都会自毁,这时候一次攻击就算结束了。
另外还有一些附加的视听效果,比如点着树,轰击声效等,因为没设么特殊,就不一赘述了。
下边这个是我自定义的一个移动光束武器,会沿s形路线向前行进,因为最后给白球用,为了配合攻击,把白球的演算体也做了一点修改。
演示图地址http://bbs.islga.org/forum.php?m ... 2&page=1#pid2296273
|
|