NavMesh简介
unity 中使用Navigation作为解决方案。
- 寻路(驱动一个游戏物体移动到目标位置上)
图上所有蓝色的区域为walkable可走的区域,NavMesh由多个多边形组成。
- Unity会自动检索场景对象附近的多边形网格,并将它们进行路线烘焙,并寻找出烘焙路线中的最短路径。
Navigation导航
- 为了实现导航首先需要创建一个场景,并烘焙
- 创建一个Plane并命令为NavMesh,并添加一个Cube改变形状作为它的子物体,进行场景搭建。
- 接着进行烘焙
- 烘焙过后Unity会自动为我们创建一个与改场景同名的文件夹用于保存NavMesh
Navigation Bake参数介绍
Paste_Image.png- Agent Radius:该参数代表场景中对象的烘焙通用宽度。(代理的避让半径。当代理作为障碍物时,其他代理不能从中穿过。)
-
如果增大这个参数带来的效果
- 增大前
- 增大后
-
Agent Height:垂直间隙空间的高度,当高度小于这个高度时,这个高度以下的多边形网格将不会被NavMesh烘焙。
Paste_Image.png -
增大这个高度(具有垂直Mesh的多边形网格将不会被烘焙)
- Max Slope:可以进行烘焙的最大坡度
- 坡度大于45度时,则这个斜坡则不会被烘焙。
- Step Height:台阶高度,高度差小于0.4的将会被连接在一起
- Generated Off Mesh Links(分离网格组件,可以将两个网络进行连接)
-
Advance 参数,立体像素大小(与Agent Radius(游戏代理角色)相关,为Agent Radius的三分之一)
Paste_Image.png -
最小区域
-
当独立面积小于2的时候不进行烘焙
-
Height Mesh
- 勾选时会对原来的高度进行运算,对内存和性能有影响
导航的实现
- 在场景中添加一个胶囊体作为角色,添加一个空物体作为Target。
- 为胶囊体添加一个Move脚本并将Target的Transform拖拽进去。
- 运行游戏Unity会自动计算最短路线,红色线为路径(深色为将会经过的NavMesh三角面)。
网友评论