行为树 中断的理解

1.中断类型分为4种:
 1. None
 2. Self
 3.Lower Priority
 4. Both

2.第一种就不说了,不会打断任何行为

self类型:
 必须满足条件:
 1.当前分支处于Running状态
 2.必须是条件节点才能监听状态变化来打断别人
 3.条件节点的优先级必须比Running节点的优先级高(即在其左边)
 4.条件节点必须是当前组合节点(设置了打断类型为self的节点)的直接子节点,孙子节点都不行
 5.条件节点的状态必须发生变化才能打断。(这个好理解)
行为树 中断的理解_第1张图片
当CanSeeObj发生改变时会打断selector的下面的执行

Lower Priority类型:
1.当前组合节点(设置打断的组合节点)没有在Running状态,且已经执行结束。
2.比当前组合节点低优先级的兄弟节点所在的分支处于Running状态,也就是说当前组合节点的父节点处于Running状态。
3.条件节点是当前组合节点的直接子节点(不包括孙子节点)。
4.条件节点处于执行路径上。例如父节点为selector节点,只会重新评估到第一个成功的条件节点为止的节点序列。
5.条件节点的状态发生变化。
6.设置低优先级打断的组合节点可以嵌套。用来将孙子辈的节点加入重新评估列表。但是嵌套不能断层。

行为树 中断的理解_第2张图片

当AIIsGun返回成功时就会打断AIGuideMove(如图左边的task)

当AIIsGun返回失败时不会打断AIShoot的执行。一看就不符合逻辑(不满足开枪时,却还在开枪)

所以就有了Both类型
Both类型:

行为树 中断的理解_第3张图片

当AIIsGun返回成功时,就会打断AIGuideMove的执行
当AIIsGun返回失败时,就会打断AIShoot的执行(不满足开枪时,停止开枪)

这就是我要的情况OK。

需要哪种自己看情况决定。我这里是用的Both

你可能感兴趣的:(AI,行为树,Unity,Unity,行为树,中断类型)