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


    一个游戏DEMO的AI部分

    用到行为树组件如上

    主要说一下这两个组件

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

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

     IsTarget检查

    大碰撞 

    小碰撞

    执行间隔

     

    执行结果关键部分截取

    看出问题了么?

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

     

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

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

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

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

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

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

    改进后代码 大碰撞

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

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

  • 相关阅读:
    《数据结构》C++代码 线性表
    《数据结构》C++代码 Splay
    《数据结构》C++代码 前言
    蓝桥杯- 算法提高 最大乘积
    HDU-1241 Oil Deposits
    一个简单的网站计数器
    编写一个jsp页面,输出九九乘法表。
    Sum It Up
    历届试题 剪格子
    历届试题 分糖果
  • 原文地址:https://www.cnblogs.com/motorcycle-stone/p/6000045.html
Copyright © 2020-2023  润新知