Unity A*寻路插件简单解析

在使用最新版A*寻路插件时发现一些问题,本篇记录一下:

使用的A*寻路插件是 4.2.15 Pro版本 

根据插件自带的文档有个简单的了解  之后在操作中有些小问题统一归纳一下:

Graph

Graph一共是分为五种,GridGraph,Layered Grid Graph ,NavmeshGraph ,PointGraph   以及Pro版本特有的RecastGraph。

五种Graph的区别从名称中就能了解,在项目中使用的是NavmeshGraph,也试用过其他几种,但是NavmeshGraph对于项目是最为贴切的。

参数大致相同,详细的解释可以看插件里面的Document,这里做一些通用的操作性的介绍:

使用

Unity A*寻路插件简单解析

(以Grid Graph为例) 

根据文档可以有个初步了解,首先照常创建一个空物体,在该物体上添加 AstarPath 脚本,然后调整其范围和大小,官方建议是将右边红框内的轴心点设置为左下角,Width 和 Depth 可行根据路径范围大小设置,但是最大好像就是1024了(知道如何更大的大佬请不吝赐教)Node size可以理解为每一个节点之间的距离 ,调整好这些之后设置一下Layer

Unity A*寻路插件简单解析 

collider type建议使用Sphere  具体看项目情况,Mask这边一直搞混淆了概念,一直以为是选中的layer是遮罩忽略掉的,实际上时选中的layer才是不被遮罩的层级。

下一步处理路径,将路径物体的Layer设置之后再Mask中选中。

添加障碍物的地方也是需要设置 Layer 之后进行烘焙。

Unity A*寻路插件简单解析

点击烘培。

=========================================分割线========================================

这里单独介绍NavmeshGraph  这个和其他的不太一样 ,和Unity官方的 NavMeshAgent 差不多 设置好参数和Mesh之后进行烘培就OK

另外说下Pro版本独有的RecastGraph 根据文档介绍 这个是会自行烘培路径  也就是设置好Layer和Size之后直接烘培出来的路径是比较好的。

建议使用RecastGraph  (有条件的强烈推荐)

设置AI

需要添加的组件

  1. Character Controller组件
  2. Seeker组件
  3. AI Destination Setter组件

三个基本组件,之后让AI动起来的方式有两种,一种是参照文档里面的东西进行自写(百度也有很多自行编写的脚本),另外一种是使用插件自带脚本(一共三种Rich AI ,AI Path ,AILerp),根据需要自选,

注:AIPath脚本可以用于任何图形,而RichAI主要是基于navmesh的图形。AIPath和RichAI脚本松散地遵循路径,而AILerp脚本使用插值沿着路径非常精确地移动

到此基本完成,但是路径线条都是直线不平滑   行走效果不好,在添加一个平滑脚本

FunnelModifier

官方翻译:

(最直接的一个是简单的平滑修改器,可以在菜单栏找到- >组件- >寻路- >修改器- >简单平滑。把它添加到我们的AI中。这个修改器要做的是,对路径进行多次细分,直到每个分段都小于最大分段长度变量。然后它会通过使点彼此靠近来平滑路径。这个修改器有很多设置,我不会在这里一一介绍。有关每个变量的更多信息,请参见SimpleSmoothModifier文档。)

到此基本使用完成  后续的话有什么新的东西会继续补充,在项目中我我使用的是 RecastGraph ,RichAI  ,以及平滑处理。

Over!