NavMesh 层(仅限专业版)
导航系统的主要任务就是找出导航空间中两点之间的最佳路径。最简单的情况是最佳路径为最短路径。然而,在许多复杂环境中,某些区域比其他区域更难穿越(比如渡河比过桥更费时费力)。为模拟此种情况,Unity 利用成本概念,将成本最低的路径定义为最佳路径 (optimal path) 。为了管理成本,Unity 推出了 导航网格层 (Navmesh Layer)概念。每个标为导航网格静态 (Navmesh Static) 的几何结构都属于导航网格层 (Navmesh Layer)。
在寻路期间,不是比较潜在路径片段的长度,而是评估每个片段的成本。以特定片段的导航网格层 (navmesh layer) 成本来衡量每个片段的长度来完成此过程。请注意,当所有成本设置为 1 时,最佳路径与最短路径相同。
如需定义每个工程的自定义层
请转至
转至其中一个用户层,设置名称和成本
该名称将会在场景的任何位置使用,以识别导航网格层
成本表示横穿导航网格层的难度。1 为默认值,2.0 表示难度是 1 的两倍,而 0.5 表示难度是 1 的二分之一,等等。
这里有 3 个内置层
默认层 - 指定未另作说明的所有内容的成本
不可行走层 - 忽略成本
跳跃层 - 自动生成分离网格链接 (off-mesh link) 的成本
如需将自定义层应用到特定几何结构中
请在编辑器中选择此几何结构
上拉
窗口( )转至
标签页,为该对象选择需要的
如果在
窗口中启用了 ,则不同层应在编辑器中以不同颜色显示。
如需告知代理什么层可以穿越或什么层不可以穿越
请转至代理几何结构的 NavMeshAgent 组件
修改可行走的导航网格 (NavMesh Walkable) 属性
请记得从脚本中设置代理的目的地属性
请注意:不建议将成本值设置为小于 1 的值,因为在此类情况中,基本寻路法不能确保最佳路径。
导航网格层的一个不错的应用示例:
您设计一条行人 (NavmeshAgent) 需要穿过的道路。
中间的人行道是其路过的首选之地
为该条道路的大部分设置高成本的导航网格层,而为人行道设置低成本的导航网格层。
这将使代理采用经过人行道的路径
高级寻路的另一个相关话题是分离网格链接
(返回 导航与寻路)
,