|
注意:1.5增加了一个叫“重定向飞弹”的效果,但和这里说的并不是一回事,这里讲的是“发射飞弹”效果。
在1.5.0版本以前,大家是如何实现dota那种“钩子”技能的呢?
使用力效果么?
力效果的缺点是无法穿过障碍,移动速度也受限于目标单位的移动速度,因此当你和你的目标隔开一道悬崖时,你就没法把他钩过来了。
直接用触发器或者传送效果来移动单位?
存在效率上的问题,而且如果想要模拟抛物线型的路径的话,计算上也有很大负担。
直接移动单位到目标点,然后用actor来实现视觉效果?
不够完美
如果我们可以让一个现有单位临时地变成飞弹,并发射到目标点,那么制作钩子或者跳跃技能就会非常方便了。
而现在,在1.5中,你已经可以直接以“发射飞弹”效果来发射一个地图上已经存在的单位,并指定发射过程中使用的mover。也就是说,你可以把一个现有单位当成导弹来发射出去。
其实在1.5版本以前,你已经可以部分做到这一点。
只要把飞弹发射(Launch Missile)效果的“Ammo Unit”这一栏去掉。那么,Launch Missile效果会自动使用发射点的单位(如果发射点是一个单位)作为导弹来发射。
但是一般来说,导弹命中目标点后会死亡,但我们如果想做钩子技能的话,我们显然不希望被勾过来的单位立刻死亡,怎么办呢?
这里又有另外一个窍门:把飞弹效果的死亡类型(Death Type)改成“未知(Unkown)”。这样,这个飞弹就不会死了。于是就实现了把单位发射到目标点,却又不死亡的效果。
但在1.5以前,这里存在一个bug。一旦一个单位变成飞弹,它的mover就变不回来了。而飞弹在抵达目标点以后就无法进行移动,所以被发射的单位将一直卡在目标点,无法移动也做不了任何动作。
但是1.5修正了这一bug。所有被当成飞弹发射出去的单位,在抵达目标点或者飞弹mover超时以后,会自动变回该单位原有的mover。也就是说,又可以正常移动了。
好了,既然如此,现在我们想要制作钩子技能就变得很容易了,只要先做一个抛出钩子的效果,然后在钩子命中目标时,把目标单位发射到施法者的位置即可。
以下为演示地图中“将目标钩过来”的核心效果
[codes=xml]
<CEffectLaunchMissile id="HookLaunchToMe">
<LaunchLocation Value="TargetUnit"/>
<ImpactLocation Value="CasterPoint"/>
<Flags index="2D" value="1"/>
<Flags index="Channeled" value="1"/>
<Flags index="Placement" value="1"/>
<Flags index="ValidateAbil" value="0"/>
<Flags index="ValidateWeapon" value="0"/>
<PlacementRange value="3"/>
<Movers Link="HookedVictim"/>
<DeathType value="Unknown"/>
</CEffectLaunchMissile>
[/codes]
由于我们想要发射的是目标单位,所以LaunchLocation为目标单位,而目标点位Caster Point。
将死亡类型设为unknown以免单位被钩过来以后死亡。
那“2D”这个flag是做什么的呢?你看了下面的视频后会发现,战巡舰发射自己到目标点后,它的高度将会一直保持目标点的高度不变。这显然不够完美。因此2D这个flag是用来保证单位的发射目标点高度和原高度相同,以免出现高度异常的问题。这样,当你把飞行单位钩过来以后,飞行单位的高度不至于产生变化。
单纯这样做还不够完美,因为把目标钩过来还设计到一个放置问题。如果施法者周围空间不够,就可能会出现目标单位被钩过来以后被卡在悬崖里面,或者别的单位里面的问题。一般来说,遇到这种问题时我们先要在施法者身边创建一个临时占位单位。好在发射导弹效果自带一个“放置(Placement)”flag。我们只要勾上这个flag,然后后设好放置距离(Placement Range)”,比如设为3的距离。这样在飞弹的目标点如果3的范围内没有地方可以放置,那么这个发射效果就会自动取消。免去了许多麻烦,而如果有地方可以放置,那么这个飞弹会被直接发射到那个可放置的位置。
附件是演示地图,演示地图里有一个感染者和一个战巡,感染者可以把任何目标单位勾到自己身边(不论空中单位还是地面单位,不改变目标单位的高度)。而战巡可以把自己发射出去轰炸目标(会改变高度)。
大家可以自己测试效果。
最后两大注意要点:
1]这个效果本质上是动态改变单位的Mover。但问题是目前1.5 alpha的发射导弹小国并不接受非导弹类型的Mover。所以如果你想要把一个地面单位的Mover变成空中单位只有靠Catalog
2]当你要使用发射导弹效果来发射一个已经存在的单位时,切记不能勾上“Return”。在1.5alpha中会导致游戏崩溃。因为连单位本身都发射出去了,导弹当然无法正确得到返航坐标。 |
|