状态树
- 创建简单的行为树
- 操作过程
- 复杂任务
- 案例:敌人的巡逻
- 案例:控制主角行走
- 案例:控制主角的追寻
创建简单的行为树
操作过程
- 导入unity behavior designer v1.5.5包,这是一个状态树的插件。
- 新建一个cube,命名为NPC。
- 点击tools->behavior designer->editor,会出现状态树的搭建场景。
- 选择NPC,可以搭建NPC的状态树,NPC界面也会出现behavior tree。
- 图示位置为状态树名字。
- 简单建立一个状态树。选择tasks->actions->log为例子,会显示下图的状态树。
- 在inspector里可以修改每个状态的具体信息。
复杂任务
Composites
Sequence—实现多个任务
可以实现多个任务,简单设置2个log,分别输出“111” “222”。
Actions
log----输出
idle----停一段时间,一直running
wait----等待一个时间,再返回
behavior tree界面
options
restart when corr-----结束后,再开启。
案例:敌人的巡逻
- 导入behavior designer - movement_pack_v1.3.2包。
- 建立一个场景,包括地面与敌人enemy。为敌人建立状态树,改名为enemyAITree。添加action->movement->patrol。
patrol----控制两点间移动 - 设置4个空物体作为巡逻点。
- 为地面添加寻路系统,敌人添加NAV mesh agent。
- 设置patrol任务。
waypoints----巡逻点
案例:控制主角行走
- 建立player,为player添加NAV mesh agent,状态树。
- seek的设置
target—目标点 - 绿色为player
案例:控制主角的追寻
- 判断player是否看到敌人。状态树添加conditionals->movement->can see object。
target object-----看到的目标
object layer mask-----看到的层
view distance -----观看到的距离 - 通过中间变量传递。设置多个不同类型的变量
- 为第一个seek,can see object以及第二个seek修改信息。
- 添加一个Sequence,一个selector。最终的状态树。
- Sequence