Unity GameAI-(8)Path Following

Path Following

路径跟随

  • 原理:
    • Path following 行为产生一个操控力,使交通工具沿着构建路径的一系列路点(Waypoint)移动。
    • 路径类型
    • 线性-有起点和终点
    • 循环型- 封闭路径
Unity GameAI-(8)Path Following_第1张图片
Paste_Image.png
  • wander也可以用这种方式来实现,即把这些路径点让智能体来随机选取进行移动。

实现的原理

  • 判断下一个节点是不是终点,如果是终点就采取arrival行为,不是终点就将target的节点数组++然后采取Seek行为。
Unity GameAI-(8)Path Following_第2张图片
Paste_Image.png

Unity 中的代码实现

  • 首先我们需要在场景中为智能体添加路径点(transform)
Unity GameAI-(8)Path Following_第3张图片
Paste_Image.png
  • 接着给智能体添加pathFollowing的脚本,并且为脚本添加需要使用到的字段
Unity GameAI-(8)Path Following_第4张图片
Paste_Image.png
  • 将场景中的wayPoint添加到pathPoints的数组里
Unity GameAI-(8)Path Following_第5张图片
Paste_Image.png
  • 接着进行操控力的获取
Unity GameAI-(8)Path Following_第6张图片
Paste_Image.png
  • 如果当前的目标点已经是最后一个点了,进行arrival行为,从而开始进行判断,智能体是否到达了减速半径以内如果没有到达就用Seek,到达了减速半径则使用arrival(arrival里直接包括了Seek行为)。

  • 如果不是最后一个目标点

Unity GameAI-(8)Path Following_第7张图片
Paste_Image.png
  • 通过使用dist(距离向量)的模小于0.2f(假设值)来判断已经到达了当前目标点,数组下标++,重置target,继续Seek行为。

  • 通过获得的操控力控制智能体移动

Unity GameAI-(8)Path Following_第8张图片
Paste_Image.png
  • 演示:
3.gif

Interpose(插入)

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

原理图:

Unity GameAI-(8)Path Following_第9张图片
Paste_Image.png

C++伪代码:

Unity GameAI-(8)Path Following_第10张图片
Paste_Image.png

你可能感兴趣的:(Unity GameAI-(8)Path Following)