参考链接:

https://blog.csdn.net/linxinfa/article/details/72937709

https://blog.csdn.net/wanghaodiablo/article/details/52587364

https://blog.csdn.net/q414620221/article/details/78596732

0.节点

一般情况下,只需要扩展Conditional和Action这两种节点即可,Decorator和Composite节点只需要使用内置的就足够了。

对于Conditional节点,根据判断条件返回成功或者失败即可。

对于Action节点,除了成功或者失败之外,还有一种Running的状态,表示该节点还没执行完毕,下一帧继续执行该节点。

对于Composite节点,这里直接引用链接里的:

a.Sequence:

[Unity插件]AI行为树使用总结-LMLPHP

b.Selector:

[Unity插件]AI行为树使用总结-LMLPHP

c.Parallel

[Unity插件]AI行为树使用总结-LMLPHP

这里对Parallel节点测试一下:

测试一:

[Unity插件]AI行为树使用总结-LMLPHP

[Unity插件]AI行为树使用总结-LMLPHP

测试二:

[Unity插件]AI行为树使用总结-LMLPHP

[Unity插件]AI行为树使用总结-LMLPHP

1.行为树的生命周期

一般来说,当一棵树没有可以继续执行的节点时,这棵树的生命周期也就结束了。

a.设置float变量num,值为0。下面的逻辑是如果num大于0,则输出"大于0",否则输出“小于等于0”。这棵树只执行一遍。

[Unity插件]AI行为树使用总结-LMLPHP

[Unity插件]AI行为树使用总结-LMLPHP

b.repeater节点勾选repeat forever,这棵树执行完一遍后就会继续执行了。

[Unity插件]AI行为树使用总结-LMLPHP

[Unity插件]AI行为树使用总结-LMLPHP

c.将num值改为1,增加Action节点,返回Running。这样这颗行为树就会卡在Action节点,不会继续执行其他节点了,生命周期也不会结束。

[Unity插件]AI行为树使用总结-LMLPHP

d.因为Action节点返回Running,所以行为树一直未执行完毕,repeater节点不起作用,Conditional节点只执行了一遍。

[Unity插件]AI行为树使用总结-LMLPHP

[Unity插件]AI行为树使用总结-LMLPHP

05-08 07:58