行为树 中断的理解

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值