返回介绍

NavMesh层(仅限专业版)

发布于 2021-06-20 00:15:03 字数 1794 浏览 1118 评论 0 收藏 0

导航系统的主要任务就是找出导航空间中两点之间的最佳路径。最简单的情况是最佳路径为最短路径。然而,在许多复杂环境中,某些区域比其他区域更难穿越(比如渡河比过桥更费时费力)。为模拟此种情况,Unity 利用成本概念,将成本最低的路径定义为最佳路径 (optimal path) 。为了管理成本,Unity 推出了 导航网格层 (Navmesh Layer)概念。每个标为导航网格静态 (Navmesh Static) 的几何结构都属于导航网格层 (Navmesh Layer)。

在寻路期间,不是比较潜在路径片段的长度,而是评估每个片段的成本。以特定片段的导航网格层 (navmesh layer) 成本来衡量每个片段的长度来完成此过程。请注意,当所有成本设置为 1 时,最佳路径与最短路径相同。

如需定义每个工程的自定义层

  • 请转至 编辑 (Edit) -> 工程设置 (Project Settings) -> 导航网格层 (Navmesh Layers)
  • 转至其中一个用户层,设置名称和成本
    • 该名称将会在场景的任何位置使用,以识别导航网格层
    • 成本表示横穿导航网格层的难度。1 为默认值,2.0 表示难度是 1 的两倍,而 0.5 表示难度是 1 的二分之一,等等。
  • 这里有 3 个内置层
    • 默认层 - 指定未另作说明的所有内容的成本
    • 不可行走层 - 忽略成本
    • 跳跃层 - 自动生成分离网格链接 (off-mesh link) 的成本

如需将自定义层应用到特定几何结构中

  • 请在编辑器中选择此几何结构
  • 上拉导航网格 (Navigation Mesh) 窗口(窗口 (Window) -> 导航 (Navigation))
  • 转至 对象 (Object) 标签页,为该对象选择需要的导航层 (Navigation layer)
  • 如果在导航网格显示 (Navmesh Display) 窗口中启用了显示导航网格 (Show NavMesh),则不同层应在编辑器中以不同颜色显示。

如需告知代理什么层可以穿越或什么层不可以穿越

  • 请转至代理几何结构的 NavMeshAgent 组件
  • 修改可行走的导航网格 (NavMesh Walkable) 属性
  • 请记得从脚本中设置代理的目的地属性

请注意:不建议将成本值设置为小于 1 的值,因为在此类情况中,基本寻路法不能确保最佳路径。

导航网格层的一个不错的应用示例:

  • 您设计一条行人 (NavmeshAgent) 需要穿过的道路。
  • 中间的人行道是其路过的首选之地
  • 为该条道路的大部分设置高成本的导航网格层,而为人行道设置低成本的导航网格层。
  • 这将使代理采用经过人行道的路径

高级寻路的另一个相关话题是分离网格链接

(返回 导航与寻路

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文