Unity导航 (寻路系统Nav Mesh Agent)


第一种 简单寻路  地面接触到的。到达目标点不用跳跃能够一直走路到达。

场景视图中简单搭设几个物体。如图1

Unity导航 (寻路系统Nav Mesh Agent) 

胶囊体为寻路者,黄球为目标点 红地板,绿色障碍物。

现将地板以及障碍物选中 在检视面板设置静态为Navigation Static 如图2

Unity导航 (寻路系统Nav Mesh Agent)

然后菜单栏选择窗口 Window Navigation

Unity导航 (寻路系统Nav Mesh Agent) 

然后选择AllBake烘焙如图

Unity导航 (寻路系统Nav Mesh Agent)

有三个页面参数可以调节烘焙效果,参数具体参照圣典解释。

注意 胶囊体和目标物都要烘焙在蓝色格子里面。否则不能实现,可以调节第二个页面里的参数调节烘焙大小。

然后给胶囊体添加导航组件

菜单栏ComponentNavigation-Nav Mesh Agent

Unity导航 (寻路系统Nav Mesh Agent)

组件参数详情参见圣典.

然后给胶囊体添加代码,代码内容如图

Unity导航 (寻路系统Nav Mesh Agent) 

aa即为目标物。在检视面板将球给aa。运行即可实现简单寻路。如图Unity导航 (寻路系统Nav Mesh Agent)

第二种寻路   不连续,可以跳跃的寻路

先搭设简单场景 如图   如果跳跃必须加三个跳板如图长条白板

Unity导航 (寻路系统Nav Mesh Agent) 

将地面和高台(绿色)一起设置为Navigation Static

给中间跳板加一个组件 ComponentNavigationOff Mesh Link   其中有几个属性  start和end  这就是起跳位置和落地位置,将两个跳板用鼠标拖拽上即可。胶囊体添加寻路组件和第一种一样。添加脚本。脚本一样。所有组件选择完毕后最后选择烘焙

Unity导航 (寻路系统Nav Mesh Agent) 

烘焙时 All 下面两个属性都要选中。

Unity导航 (寻路系统Nav Mesh Agent) 

如图 烘焙时有时会出现上图有个圆圈位置未烘焙上,原因是胶囊体进入地面太多。可以再将胶囊体移动位置至蓝色网格上即可 运行即可实现。以上步骤落下一步该系统便不能实现。 细心即可。

 

 

 

Unity导航 (寻路系统Nav Mesh Agent) 

Agent  Radius  代理半径 半径越小生成网格的面积越大,也越靠近静态物体的边缘。

Agent Height  代理高度

Max Slope 物体抬升台阶的高度

Drop Height 允许的最大下落距离

Jump Height 允许的最大跳跃距离

Unity导航 (寻路系统Nav Mesh Agent) 

Radius  代理逃避半径  Height 代理经过障碍物下方目的高度

Base Offset  偏移距离

Steering   操作 指导

Speed   代理最大移动速度   Angular Speed   角速度

Acceleration 最大加速度   Stopping Distance  停止时和目标的距离(距离目标多少时停下)

Auto Braking  该代理是否自动制动去避免超过目的点

 obstacle avoidance 故障排除

Quality  质量   Priority  优先级

Path Finding   路径寻找中……

Auto Traverse Off Mesh Link  该代理是否自动穿过Off Mesh Links?

Off-mesh连接用于连接不相交区域的导航网格。通常,当该属性设置为true时,角色应该有能力自动通过或者穿过连接。但是,在需要特殊控智移动的时候它也可以被设置为false。

Auto Repath  自动更新路径(例如目标位置改变,需要重新更新路径)

Area Mask 区域遮挡  (代理的行动区域,能在什么地方走。默认Everthing 任何地方)