Navigation导航寻路

NavMesh简介

unity 中使用Navigation作为解决方案。

  • 寻路(驱动一个游戏物体移动到目标位置上)
Navigation导航寻路_第1张图片
Paste_Image.png

图上所有蓝色的区域为walkable可走的区域,NavMesh由多个多边形组成。

  • Unity会自动检索场景对象附近的多边形网格,并将它们进行路线烘焙,并寻找出烘焙路线中的最短路径。

Navigation导航

  • 为了实现导航首先需要创建一个场景,并烘焙
    • 创建一个Plane并命令为NavMesh,并添加一个Cube改变形状作为它的子物体,进行场景搭建。
Navigation导航寻路_第2张图片
Paste_Image.png
  • 接着进行烘焙
Navigation导航寻路_第3张图片
Paste_Image.png
Navigation导航寻路_第4张图片
Paste_Image.png
  • 烘焙过后Unity会自动为我们创建一个与改场景同名的文件夹用于保存NavMesh
Paste_Image.png

Navigation Bake参数介绍

Navigation导航寻路_第5张图片
Paste_Image.png
  • Agent Radius:该参数代表场景中对象的烘焙通用宽度。(代理的避让半径。当代理作为障碍物时,其他代理不能从中穿过。)
Paste_Image.png
  • 如果增大这个参数带来的效果

    • 增大前
Navigation导航寻路_第6张图片
Paste_Image.png
  • 增大后
Paste_Image.png
Navigation导航寻路_第7张图片
Paste_Image.png
  • Agent Height:垂直间隙空间的高度,当高度小于这个高度时,这个高度以下的多边形网格将不会被NavMesh烘焙。


    Paste_Image.png
  • 增大这个高度(具有垂直Mesh的多边形网格将不会被烘焙)

Navigation导航寻路_第8张图片
Paste_Image.png
  • Max Slope:可以进行烘焙的最大坡度
Paste_Image.png
  • 坡度大于45度时,则这个斜坡则不会被烘焙。
Navigation导航寻路_第9张图片
Paste_Image.png
  • Step Height:台阶高度,高度差小于0.4的将会被连接在一起
Paste_Image.png
Navigation导航寻路_第10张图片
Paste_Image.png
  • Generated Off Mesh Links(分离网格组件,可以将两个网络进行连接)
Paste_Image.png
  • Advance 参数,立体像素大小(与Agent Radius(游戏代理角色)相关,为Agent Radius的三分之一)


    Navigation导航寻路_第11张图片
    Paste_Image.png
  • 最小区域

Navigation导航寻路_第12张图片
Paste_Image.png
  • 当独立面积小于2的时候不进行烘焙

  • Height Mesh

Paste_Image.png
  • 勾选时会对原来的高度进行运算,对内存和性能有影响

导航的实现

  • 在场景中添加一个胶囊体作为角色,添加一个空物体作为Target。
Navigation导航寻路_第13张图片
Paste_Image.png
Navigation导航寻路_第14张图片
Paste_Image.png
  • 为胶囊体添加一个Move脚本并将Target的Transform拖拽进去。
Navigation导航寻路_第15张图片
Paste_Image.png
Navigation导航寻路_第16张图片
Paste_Image.png
  • 运行游戏Unity会自动计算最短路线,红色线为路径(深色为将会经过的NavMesh三角面)。
Navigation导航寻路_第17张图片
Paste_Image.png

你可能感兴趣的:(Navigation导航寻路)