UE4 AI BehaviorTree 各个节点执行顺序总结

一个游戏DEMO的AI部分

UE4 AI BehaviorTree 各个节点执行顺序总结

用到行为树组件如上

主要说一下这两个组件

UE4 AI BehaviorTree 各个节点执行顺序总结

一个装饰(类似过滤器) 一个服务(代码逻辑与Blackboard交互)

Service分为 大碰撞 和 小碰撞 两个碰撞范围, 大碰撞用来跟踪, 小碰撞用来中断跟踪开始攻击

UE4 AI BehaviorTree 各个节点执行顺序总结

IsTarget检查UE4 AI BehaviorTree 各个节点执行顺序总结

大碰撞

UE4 AI BehaviorTree 各个节点执行顺序总结

小碰撞

UE4 AI BehaviorTree 各个节点执行顺序总结

执行间隔

UE4 AI BehaviorTree 各个节点执行顺序总结

执行结果关键部分截取

UE4 AI BehaviorTree 各个节点执行顺序总结

看出问题了么?

我的角色在抽筋似的反复转向

UE4 AI BehaviorTree 各个节点执行顺序总结

原因就是因为Service的执行时间是根据设置的那个间隔来的, 而跟行为树的轮播调用没有关系

行为树开始新一轮执行,如果此时跟上一轮的间隔时间没有到设置的时间,Service是不会执行的

但是如果行为树执行到一半,Service的时间间隔到了,那么Service也是会立刻执行的

所以原代码中, 我在Service里面直接修改了Blackboard的内容

恰好行为树执行到一半, 读取到我修改的值, 导致AI本来向player移动的, 变为了向NPC移动

然后因为我有player first原则, Blackboard的值又立刻变为了player, 导致AI在原地不停的转向

改进后代码 大碰撞

UE4 AI BehaviorTree 各个节点执行顺序总结

临时变量用来存放循环时的值, 这样在循环的时候不会更改黑板的值, MoveTo在取值的时候就不会被这边的循环干扰

角色就不会在游戏中抽筋似的反复转向

上一篇:python模块——random模块(简单验证码实现)


下一篇:Electron npm install 常见错误(Linux)