上一篇简单讲述了Nav Mesh导航系统的使用,并且做出了一个小案例,本篇我们会更加深入,更加系统去讲解,包括NavMeshAgent组件、NavMeshObstacle组件、OffMeshLink组件等,以及相关参数。
本系列提要Unity导航系统专题博客共分成三篇来讲解: 【本篇为第二篇】
- 第一篇(点击直达):如何快速上手使用
- 第二篇(点击直达):详解Nav Mesh Agent参数,详解如何添加动态障碍(Nav Mesh Obstacle),详解如何创建外链接(Off Mesh Link)
- 第三篇(点击直达):详解Navigation属性栏,包括AI寻路的区域与花费代价,路线网格烘焙相关参数,如何自动添加外链接
- 前言
- 本系列提要
- 本篇内容概述
- 一、Nav Mesh Agent | 导航网格代理
- Steering | 操纵、转向相关属性
- Obstacle Avoidance | 障碍回避相关属性
- Path Finding | 路径选择相关属性
- 二、Nav Mesh Obstacle | 导航网格障碍物
- 概述
- NavMesh Obstacle 组件参数
- 三、Off Mesh Link | 导航网格外链接
- 简单应用
- Off Mesh Link 组件参数
- 四、总结和参考资料
- 1.总结
- 2.参考资料
前排提醒:本文仅代表个人观点,以供交流学习,若有不同意见请评论留言,笔者一定好好学习,天天向上。
Unity版本[2019.4.10f1] 梦小天幼 & 禁止转载
视频讲解: 详解Unity的导航系统 (二)_BiLiBiLi
本篇内容概述上期我们已经讲解了关于导航网格的概念,它本质上就是一种预处理,至于为什么会处理成网格状,这与寻路算法相关,暂不讲解。而网格代理呢,就是寻路AI。这期我们接触两个新概念,一个是网格障碍物(NavMesh Obstacle),一个是网格外连接(Off-Mesh Link)。
一、Nav Mesh Agent | 导航网格代理如果想要一个角色学会自动寻路,就必须要先添加一个导航网格代理组件,以下是该组件的详细参数讲解(不理解的可以先看上一篇,先学基础再深入)
参数描述Agent Type可将AI的宽高,可跨越台阶高度,坡度等数据作为一个类型保存起来,方便不同类型的寻路AI选择不同类型,具体可在Navigation属性栏的Agents修改!!! (当前版本不生效,请忽略该属性,新版NavMesh才生效!!!!!!新版请参阅(新版后续也会讲):https://github.com/Unity-Technologies/NavMeshComponents)Base Offset碰撞圆柱体相对于变换轴心点的偏移 Steering | 操纵、转向相关属性 参数描述Speed当前AI的最大移动速度(米/每秒)Angular Speed当前AI的最大旋转速度(度/每秒)Acceleration当前AI的最大加速度Stopping Distance抵达目标时,应距离目标多少米之外,0米就是完全重合Auto Braking若启用,则AI将会在马上抵达目标时减速 Obstacle Avoidance | 障碍回避相关属性 参数描述Radius当前AI半径,用于计算与其他AI之间的碰撞Height当前AI通过头顶障碍物时所需的高度间隙Quality障碍躲避质量,如果存在大量寻路AI,则可以通过降低障碍躲避质量来节省 CPU 时间。如果将其设置为无,AI之间会忽略碰撞,相互重叠Priority执行避障时,当前AI将忽略优先级(Priority)较低的AI。该值应在 0–99 范围内,其中较低的数字表示较高的优先级 Path Finding | 路径选择相关属性 参数描述Auto Traverse OffMesh Link设置为true可自动遍历网格外链接 (Off-Mesh Link)。如果要使用动画或某种特定方式遍历网格外链接,则应关闭此功能。Auto Repath启用此属性后,代理将在到达部分路径末尾时尝试再次寻路。当没有到达目标的路径时,将生成一条部分路径通向与目标最近的可达位置*Area Mask当前AI在寻路时,可以走哪条路以及禁止走哪条路,都可以通过此项来设置,详细演示会在第三篇的AI寻路的区域与花费代价部分讲解 二、Nav Mesh Obstacle | 导航网格障碍物游戏中不可能只有静态障碍物,一定存在着动态障碍物,比如一些机关类游戏里的滚木等等。又或者马路上行驶的汽车,对于寻路AI来说,都可以称作是动态障碍物。内容概述部分提供的例图里也展示了动态障碍物,那么如何在游戏中制作这样的障碍物呢,这就需要用到NavMesh Obstacle组件了。
概述寻路AI之所以会绕开障碍物走,是因为当障碍物的高度或者坡度足够大(这里AI可跨越的高度和坡度是可以自定义的),大到AI无法跨越时,其烘焙时,就会在导航网格上雕出一个孔洞。
