行为树AbortType的学习

工作中遇到了一个小的行为,考虑到需要使用权重打断机制,学习了一下。

首先,AbortType打断机制,我使用于继承condition的条件行为,条件行为,继承Action的行为好像是不行,之前有尝试一下,没有成功,不知道是不是其他的问题。认准条件判定!

说一下我对于Abort的理解吧:

1.None:没有任何打断的机制,按照行为树的规则依次从左到右边执行,左侧的权重高于右侧,上侧的高于下侧的,在默认是None的情况下,默认是按照正常的执行,当然你也可以通过在Action里面写方法,通过监听之类的来达到同样的效果,但是这不是人家官方都做了这个功能了,建议学习使用一下。

2.self:翻译为自身,理解为打断自身的行为。我的截图为做一个介绍,其实并非我真实的使用,在

单独使用这个打断方式的时候,确保第一次能进入这个行为序列,也就是我的AiForkliftGetCanUseEquip需先返回为true,否则会直接整个返回false,也就进入下一个sequence了,self也没有任何意义了,因为self只作用于自身,底下的分支有用。

按照官方的案例的用法是:比如你的条件判定是敌人与你的距离是100m,当条件满足的时候进入

下一步的行为开始追踪敌人,但是只要敌人还没追上,也就是必须确保这个分支还没有结束,判断敌人是否在100M内就会一直进行判定,当敌人跑的比你快的时候或者,判断的行为会从新进行评估,这时候不满足100M的条件的情况下,这个sequence就会返回false,从而打断了自身正在追踪敌人的行为,结束了这个追踪的过程。

3.lower priority:这个是通过优先级来判断的,作用于同级别的行为,这个的作用的条件也同样是,你同级别的consequence底下的子分支不能全部完成,这分非常重要,一旦全部完成了这个打断也会失去效果。

这边的案例是:首先执行判断敌人是否在100M内,这时候敌人如果不在100M内的话,sequence会直接返回false,进入下一个sequence,我的这个行为是巡逻,这边只要我的巡逻的行为不完成,一旦有敌人进入了我的100M的范围内,巡逻的行为就会被打断,从新回到判断敌人在100M内的行为,并返回True,然后进入追击敌人的行为。

4.both两者同时,可以理解为,既能被其他人打断,也能被自己打断,按照案例的效果为,执行巡逻,然后敌人进入100M内,然后就可以追踪敌人,追了一会儿发现敌人跑很快追不上,然后就会打断自身行为不追了,从新进入巡逻,等带新的100M范围内的敌人,因此反复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值