1.中断类型分为4种:
1. None
2. Self
3.Lower Priority
4. Both
2.第一种就不说了,不会打断任何行为
self类型:
必须满足条件:
1.当前分支处于Running状态
2.必须是条件节点才能监听状态变化来打断别人
3.条件节点的优先级必须比Running节点的优先级高(即在其左边)
4.条件节点必须是当前组合节点(设置了打断类型为self的节点)的直接子节点,孙子节点都不行
5.条件节点的状态必须发生变化才能打断。(这个好理解)

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

当AIIsGun返回成功时就会打断AIGuideMove(如图左边的task)
当AIIsGun返回失败时不会打断AIShoot的执行。一看就不符合逻辑(不满足开枪时,却还在开枪)
所以就有了Both类型
Both类型:

当AIIsGun返回成功时,就会打断AIGuideMove的执行
当AIIsGun返回失败时,就会打断AIShoot的执行(不满足开枪时,停止开枪)
这就是我要的情况OK。
需要哪种自己看情况决定。我这里是用的Both

503

被折叠的 条评论
为什么被折叠?



