书接上期。本期为实践练习篇,如果你充分理解了上期的内容,本期内容你将如鱼得水。如果半知不解,也没关系,两篇可以一起看。
例1:将弓箭的左右闪身箭斩后派生的飞身跃入近战改为向后的弓息法,并且减少其衔接后摇。弓息法过程中不要断蓄。
先看几个最常用的几个Toolkits里的函数(目前阶段不需要理解里面内容,所以这里基本都把具体代码收起,方便我截图)
- 修改一个Node里已经存在的派生关系里的派生的节点

我们只看module后面的东西,null是空值,我们需要在此忽视它(因为这是O佬的习惯)。实际上我们看到是应该是:replaceTransition(NodeID,ConditionID,ReplaceSateIndex)
我们对这个函数,只需要传入三个参数,一个是NodeID,对应的是被修改节点;
一个ConditionID,对应原来派生节点的座位(在这里我们进行理解:一个人可以有很多座位,查找指定座位就可以找到对应的派生节点的个人信息。如果直接找这个原来的派生节点,他可能会有很多座位,这对我们的指定修改会造成干扰。)。
一个ReplaceSateIndex,对应需要修改成的派生节点。
我们打开BHVT,去找闪身箭斩的节点(一共有四个),并且选择其中一个节点——右闪身箭斩来示范。
如何寻找?
开INS键打开BHVT,把窗口调到你觉得不影响视野的地方,然后按右闪身箭斩,注意看ActiveNode后面的数字,它会显示出当前活跃节点的NodeIndex,会一直变化,这里我们看到有一个节点是4260.

我们在搜索栏输入后,点击Goto前往。

得到下面一系列东西。我们得到的节点是290的子节点,其名字带有main,其意思为主体,一般这样的就是我们要找的核心节点,这个节点控制了右闪身箭斩的,其后面的节点一般也是以此为核心。

我们展开它看,看到一大堆Actions[]等东西,这些东西就是第一篇里提到的东西,他们的组员都很多,再次证明了这是闪身箭斩的核心节点。

如果不是核心节点,它其内的Action,States,Condition通常有至少一个数量非常少。
例如4261,它是控制闪身箭斩结束的节点,我们很容易就可以想到它受4260管辖。其Action非常少,但是派生对却很多。

再例如4264节点:

几乎没有什么东西在它里面,代表它是边缘节点,我们通常不需要使用它。我们需要的是核心节点的东西。
现在回到4260节点上来,其NodeID则是我们需要的NodeID。现在展开它的States:

我们得到非常多的派生节点,那怎么知道我们需要的飞身跃入近战是哪个?
我们可以开着这个界面进行一次右闪身箭斩—飞身跃入近战这个派生。然后我们通常可以看到这里突然有个节点RUNING起来了。而这个节点就是我们要找的节点。
如果发现这个法子不奏效,换个最简单的法子。我们一个一个跑这些节点,对每个节点都点下RUN键,就可以知道它们代表的啥了、我用这个方法得到了飞身跃入近战的节点如下:

316为它的NodeIndex。也就是我们需要的原本派生节点。但是我们需要考虑它可能有两个座位,所以我们手动去找下它在这里对应的Conditon,按照小组序号去翻,上面序号是7,所以我们找到Conditon的7位下面的:

这就是我们需要的ConditonID/Index(两者都指同一个东西)。
之后我们找需要派生的节点对象。也就是弓息法。
同理,释放弓息法,在ActiveNode里找到了向后弓息法的节点:4112
我们搜索并且Goto。但是我们发现其Action[],States[],Condition[]很少,不如下面的4113和4114多,4113和4114两者都没有三个目录数量特别多的,4113控制弓息法下落,4114对应弓息法落地,在这里我们可以把他们都当做核心节点。
但是我们注意一个事情,我们在寻找派生节点,目的是实现跳转到弓息法,核心节点不代表它控制这个事件的所有东西,那么在这个时候,他们共同的父节点269,是可以的被选择作为派生节点。
269是他们的父,可以理解为他们的代表性对象,尽管它里头通常啥都没有,但是它可以代表向后弓息法这件事件里所有东西的发生。在许多派生对里,父节点经常被选择作为派生的节点(也有例外)。我们在这里可以选择269,也可以4112(4112是269和4113中间的过渡节点,可以理解为和269差不多的节点,但是实际还是有差距的,269是代表事件的节点,而4112是开始了事件的节点)

我选择ReplaceSateIndex为269,至此,我们所有需要的参数都找到了,第一次做难免觉得繁琐一点,熟练过后,上面的这些加起来不好超过两分钟。
replaceTransition(NodeID,ConditionID,ReplaceSateIndex)
NodeID:4260节点的NodeID:34212903

ConditionID/Index:飞身跃入近战的对应ConditonID/Index为6943
ReplaceSateIndex:代表向后弓息法的NodeIndex,269
我节点打开佬的模板,找到这个地方,把武器种类修改为13(代表弓箭,其他武器种类在Toolkits打开的第一页就有)

在 Then 下面一行输入
toolkits:replaceTransition(34212903,6943,269)
其他相关的函数,同理使用,不再进行细致讲解:



使用上面的几个方法就可以做到例2.1里的初步要求。
此例可分为以下三部分:

这里的310似乎上面的269不一样,这是因为310节点是专门判断弓息法方向的节点,它可以跳转三个方向的弓息法,非常好用。

对于Condition里面属性的修改,需要按照上图里的操作进行。对于StartFrame等东西的介绍,其他教程已经有了很详细的介绍,不再赘述。

弓息法一共有三个方向的,每个方向各自都有一个父节点代表事件。而每个弓息法,前面我们说过,有两个核心节点,我们想要保持蓄力,必须对这两个都添加保持蓄力Action。因此我们一共添加6次。
对于这种重复添加的情况,可以用下面这种方式减少工作量。
