Unity GameAI-(8)Path Following
2016-12-08 本文已影响59人
Levi_Wan
Path Following
路径跟随
- 原理:
- Path following 行为产生一个操控力,使交通工具沿着构建路径的一系列路点(Waypoint)移动。
- 路径类型
- 线性-有起点和终点
- 循环型- 封闭路径

- wander也可以用这种方式来实现,即把这些路径点让智能体来随机选取进行移动。
实现的原理
- 判断下一个节点是不是终点,如果是终点就采取arrival行为,不是终点就将target的节点数组++然后采取Seek行为。

Unity 中的代码实现
- 首先我们需要在场景中为智能体添加路径点(transform)

- 接着给智能体添加pathFollowing的脚本,并且为脚本添加需要使用到的字段

- 将场景中的wayPoint添加到pathPoints的数组里

- 接着进行操控力的获取

-
如果当前的目标点已经是最后一个点了,进行arrival行为,从而开始进行判断,智能体是否到达了减速半径以内如果没有到达就用Seek,到达了减速半径则使用arrival(arrival里直接包括了Seek行为)。
-
如果不是最后一个目标点

-
通过使用dist(距离向量)的模小于0.2f(假设值)来判断已经到达了当前目标点,数组下标++,重置target,继续Seek行为。
-
通过获得的操控力控制智能体移动

- 演示:

Interpose(插入)
- Interpose行为返回一个操控力操控角色移到2个智能体(或空间两点,或一个智能体与一个点)的中点。
- 预测(猜测)算法:得到连接两智能体当前位置的线的中点,计算:从交通工具到该点的距离/交通工具的最大速度=交通工具走完这段距离的时间T;使用T推断2个智能体未来位置,得到两智能体未来位置的线的中点,最后交通工具使用arrive行为移向该点。
原理图:

C++伪代码:
