概述
- 队形扩展包
- 包含了 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 的位置。有以下方法可被重写:
/// 指定一个目标位置
/// index: 队形中成员的索引
/// zLookAhead: 面朝目标的Z轴距离
/// Returns: agent 的下个世界坐标
protected Vector3 TargetPosition(int index, float zLookAhead)
/// 将 agent 加入队形。agent 被加入队形时调用,用于初始化
/// agent: 加入的 agent
/// Returns: agent 在队形中的索引
protected void AddAgentToGroup(Behavior agent, int index)
/// 将 agent 移除队形。agent被移除队形时调用,用于销毁处理
/// agent: 移除的 agent
/// Returns: agent 在队形中的索引
protected int RemoveAgentFromGroup(Behavior agent)
举例:
protected override Vector3 TargetPosition(int index, float zLookAhead)
{
return transforms[0].TransformPoint(index * 2, 0, zLookAhead);
}
上述代码,实现了一个间隔 2 米的队列。
transforms 数组包含了队形中所有 agents 的 transforms。上面是以第 0 个 agent 依次往后偏移排队。
zLookAhead 用于防止 agent 永远在目标的停止距离之内。