• 行为树是多个 AI 技术的结合
    • 层级状态机
    • 时序调度
    • 预先规划
    • 动作执行
  • 优点

    • 容易理解
    • 可视化构建
    • 可封装子树 sub-tree,并使用子树构建高层级的行为

      Task 类型

      image.png

      动作 action

  • 改变游戏状态

  • 上图中的:Shoot、Shoot Animation

    条件 conditional

  • 测试/判断一些属性

  • 上图中的:Within Sight、Enough Bullets

    组合 composite

  • 拥有多个子 task 的父 task

  • 上图中的:Sequence、Parallel
  • 具体 composite 类 task 功能

    • Sequence
      • 从左往右,顺序执行
      • 直到一个 task 不通过,中断执行
      • 或执行完所有 task
    • Parallel
      • 子 task 同时执行
    • Selector
      • 执行第一个通过的 task
    • 其他

      修饰 decorator

  • 拥有一个子 task 的父 task

  • 更改子 task 的行为
  • 上图中并没有,举例:

    • 提前停止一个 task
    • 执行子 task 多次
    • 持续执行子 task,直到成功完成

      Task Status

  • 作用:task 的返回值

    • 举例:有些 task 的执行超过一帧时间(比如 animation),因此父 task 需要知道子 task 状态,决定是否要持续执行子 task
  • 三种状态

    • running
      • 上图中,Shoot Animation 在动画播放时,状态一直是 running
    • success
      • 上图中,Within Sight 是个 conditional task,如果有敌人在视野内,当前帧就会返回 success
    • failure
      • 上图中,Enough Bullets 是个 conditional task,如果子弹不够,当前帧就会返回 failure

        已包含内容

  • API 接口类似 Unity MonoBehaviour API

  • composite 和 decorator:包含了大量的封装类
  • action 和 conditional:包含但不多(因为是具体项目相关的)
    • 示例项目中提供了很多例子
  • 可扩展已有 task 类型,创建新的 task 类型