状态树

  • 创建简单的行为树
  • 操作过程
  • 复杂任务
  • 案例:敌人的巡逻
  • 案例:控制主角行走
  • 案例:控制主角的追寻


创建简单的行为树

操作过程

  1. 导入unity behavior designer v1.5.5包,这是一个状态树的插件。
  2. unity 树状ui排列 unity怎么做树_寻路

  3. 新建一个cube,命名为NPC。
  4. 点击tools->behavior designer->editor,会出现状态树的搭建场景。
  5. unity 树状ui排列 unity怎么做树_unity_02


  6. unity 树状ui排列 unity怎么做树_操作过程_03

  7. 选择NPC,可以搭建NPC的状态树,NPC界面也会出现behavior tree。
  8. 图示位置为状态树名字。
  9. unity 树状ui排列 unity怎么做树_unity_04

  10. 简单建立一个状态树。选择tasks->actions->log为例子,会显示下图的状态树。
  11. unity 树状ui排列 unity怎么做树_寻路_05

    unity 树状ui排列 unity怎么做树_寻路_06

  12. 在inspector里可以修改每个状态的具体信息。
  13. unity 树状ui排列 unity怎么做树_unity_07

复杂任务

Composites

Sequence—实现多个任务

可以实现多个任务,简单设置2个log,分别输出“111” “222”。

unity 树状ui排列 unity怎么做树_unity 树状ui排列_08


Actions

log----输出

idle----停一段时间,一直running

wait----等待一个时间,再返回

behavior tree界面
options
restart when corr-----结束后,再开启。

案例:敌人的巡逻

  1. 导入behavior designer - movement_pack_v1.3.2包。
  2. 建立一个场景,包括地面与敌人enemy。为敌人建立状态树,改名为enemyAITree。添加action->movement->patrol。
    patrol----控制两点间移动
  3. unity 树状ui排列 unity怎么做树_unity_09

  4. 设置4个空物体作为巡逻点。
  5. 为地面添加寻路系统,敌人添加NAV mesh agent。
  6. 设置patrol任务。
    waypoints----巡逻点
  7. unity 树状ui排列 unity怎么做树_操作过程_10

    unity 树状ui排列 unity怎么做树_寻路_11

案例:控制主角行走

  1. 建立player,为player添加NAV mesh agent,状态树。
  2. unity 树状ui排列 unity怎么做树_寻路_12

  3. seek的设置
    target—目标点
  4. unity 树状ui排列 unity怎么做树_操作过程_13

  5. 绿色为player
  6. unity 树状ui排列 unity怎么做树_行为树_14

案例:控制主角的追寻

  1. 判断player是否看到敌人。状态树添加conditionals->movement->can see object。
    target object-----看到的目标
    object layer mask-----看到的层
    view distance -----观看到的距离
  2. unity 树状ui排列 unity怎么做树_寻路_15

  3. 通过中间变量传递。设置多个不同类型的变量
  4. unity 树状ui排列 unity怎么做树_unity 树状ui排列_16

  5. 为第一个seek,can see object以及第二个seek修改信息。
  6. unity 树状ui排列 unity怎么做树_unity 树状ui排列_17

    unity 树状ui排列 unity怎么做树_unity_18

    unity 树状ui排列 unity怎么做树_行为树_19

  7. 添加一个Sequence,一个selector。最终的状态树。
  8. unity 树状ui排列 unity怎么做树_unity 树状ui排列_20

  9. Sequence
  10. unity 树状ui排列 unity怎么做树_行为树_21