商店 | 官网 | 文档
image.png

概述

  • 移动扩展包
  • 包含了 17 个移动相关的 Tasks
    • 其中的聚集(flock)、跟随领队(leader follow)、队列(queue),展示了如何通过行为树实现控制多个 AI,可作为学习案例
  • 支持的寻路方案:Unity NavMesh(默认)、A* Pathfinding Project、Poly Nav
    • 行为树并不控制 Agent 的移动,而是设置目的地,由寻路驱动 Agent 转向和移动
  • 每个 task 都有详细的描述,功能通用简洁,可以很容易地融入你的项目

    包含 Tasks

  • 向前移动 Move Towards

  • 向前旋转 Rotate Towards ???
  • 寻找 Seek
  • 逃跑 Flee
  • 追赶 Pursue
  • 规避 Evade
  • 跟随 Follow
  • 巡逻 Patrol
  • 掩护 Cover
  • 闲逛 Wander
  • 搜寻 Search
  • 范围内 Within Distance
  • 看到对象 Can See Object
  • 听到对象 Can Hear Object
  • 聚集 Flock
  • 跟随头领 Leader Follow
  • 队列 Queue

    常见问题

    Q1:为什么 agent 在目的地周围摆动?
    A:NavMeshAgent 的 Stopping Distance 参数配置得太小了,一般 0.1。

Q2:为什么 Can See Object 检测不到目标对象?
A:Can See Object task 以 agent 对象的中心坐标为起点,以目标对象的中心坐标为终点,发送一条射线。如果中心坐标低于地面碰撞体,Can See Object task 就会返回 failure。此时可通过增加 Can See Object task 的 Ofsset 参数和 Target Offset 参数的 y 值解决这个问题。

Can See Object task 有个 Draw Debug Ray 可勾选参数,勾选后,检测射线会变得可视化,并且考虑到了 offset 值。射线的不同颜色,反映了不同的状态:

  • Magenta:目标太远
  • Red:目标不在视野内
  • Yellow:有其他对象挡住了目标
  • Green:目标被看到

Q3:该扩展在 3D 空间中是否起作用?
A:3D 空间寻路计算量非常大,目前还没有可用的方案,但是有些变通方法:

  • 在空中铺设透明的路
  • 在某些寻路实现中,比如 Unity NavMesh,支持调整 Agent 的高度偏移,可以近似实现空中移动
  • 不使用寻路,使用有局部避障(local avoidance)功能的控制行为,需要自己实现,该扩展包中未包含