商店 | 官网 | 文档
image.png

概述

  • 队形扩展包
  • 包含了 14 个队形相关的 Tasks
  • Agent 随时可以加入或离开队形,队形动态响应变化
  • 支持的寻路方案:Unity NavMesh(默认)、A* Pathfinding Project
    • 行为树并不控制 Agent 的移动,而是设置目的地,由寻路驱动 Agent 转向和移动
  • 支持的其他扩展包:Ultimate Character Controller、Deathmatch AI Kit
  • 每个 task 都有详细的描述,功能通用简洁,可以很容易地融入你的项目

    包含 Tasks

  • 纵队 Column

  • 横队 Row
  • 方阵 Grid
  • 一排 Line
  • 梯队 Echelon
  • 楔形 Wedge
  • V 形
  • 弧形 Arc
  • 散兵 Skirmisher
  • 蜂拥 Swarm
  • 菱形 Diamond
  • 三角形 Triangle
  • 方形 Square
  • 圆形 Circle

    自定义队形

新建一个自定义队形,继承自 GroupFormation 基类。GroupFormation 基类为你处理了大多数工作,你需要做的就是指定每个 agent unit 的位置。有以下方法可被重写:

  1. /// 指定一个目标位置
  2. /// index: 队形中成员的索引
  3. /// zLookAhead: 面朝目标的Z轴距离
  4. /// Returns: agent 的下个世界坐标
  5. protected Vector3 TargetPosition(int index, float zLookAhead)
  6. /// 将 agent 加入队形。agent 被加入队形时调用,用于初始化
  7. /// agent: 加入的 agent
  8. /// Returns: agent 在队形中的索引
  9. protected void AddAgentToGroup(Behavior agent, int index)
  10. /// 将 agent 移除队形。agent被移除队形时调用,用于销毁处理
  11. /// agent: 移除的 agent
  12. /// Returns: agent 在队形中的索引
  13. protected int RemoveAgentFromGroup(Behavior agent)

举例:

  1. protected override Vector3 TargetPosition(int index, float zLookAhead)
  2. {
  3. return transforms[0].TransformPoint(index * 2, 0, zLookAhead);
  4. }

上述代码,实现了一个间隔 2 米的队列。

transforms 数组包含了队形中所有 agents 的 transforms。上面是以第 0 个 agent 依次往后偏移排队。

zLookAhead 用于防止 agent 永远在目标的停止距离之内。