详解Unity中的Nav Mesh新特性|导航寻路系统 (一)

前言

之前我们讲解过Unity的Nav Mesh系统,其中提到过这个新版的Nav Mesh,它解决现有Nav Mesh的几个缺陷,比如无法动态烘焙,无法按照Agent的半径和高度适当的判断可行路径。现在新版Nav Mesh可以彻底解决这个问题!某种意义上讲,它只能算作一个补丁,因为它要依赖于原有的Nav Mesh系统,本篇文章就来讨论一下这个新版NavMesh系统到底是什么。

本系列提要

Unity新版NavMesh专题博客共分成三篇来讲解: 【本篇为第一篇】

  • 第一篇(点击直达):新版NavMesh安装使用与概述
  • 第二篇(点击直达):详解NavMeshSurface、NavMeshLink组件的参数和应用
  • 第三篇(点击直达):详解NavMeshModifier、NavMeshModifierVolume组件的参数和应用

Unity旧版NavMesh专题博客指路

  • 第一篇(点击直达):如何快速上手使用
  • 第二篇(点击直达):详解Nav Mesh Agent参数,详解如何添加动态障碍(Nav Mesh Obstacle),详解如何创建外链接(Off Mesh Link)
  • 第三篇(点击直达):详解Navigation属性栏,包括AI寻路的区域与花费代价,路线网格烘焙相关参数,如何自动添加外链接

Unity版本[2019.4.10f1] 梦小天幼 & 禁止转载

视频讲解:
【详解Unity】导航系统(一) | Nav Mesh新特性 | 概述篇


一、如何安装新版Nav Mesh

官方把该版本的NavMesh放到了GitHub上,目前还处于实验包阶段,使用起来是绝对没任何问题的,支持Unity5.6之后的版本,目前我使用的版本是2019.4.10f1,详细版本说明可以参考原GitHub页面版本说明

在Navigation属性栏的Bake选项卡上,官方就已经把链接贴了出来
在这里插入图片描述

https://github.com/Unity-Technologies/NavMeshComponents

两种安装方式

1.从GitHub下载把文件下来,然后直接拖入Asset文件夹即可
主要是把这个文件夹(里面都是C#脚本,没啥神秘的)拖入自己项目的Asset文件夹中,其他都是一些案例演示
在这里插入图片描述

2.从包管理器(Package Manager)中根据包名(Package name)下载

首先打开包管理器(Window-Package Manager)
第二步
在这里插入图片描述

第三步 输入包名 点击Add之后等待下载完毕 | 包名(com.unity.ai.navigation)
在这里插入图片描述


二、与旧版Nav Mesh区别

我们从组件方面入手来讲解

旧:
旧版NavMesh包括三个组件,NavMesh Agent、NavMesh Obstacle、Off MeshLink
分别用于AI寻路的代理、设置动态障碍物、设置外部链接

还有Navigation属性栏下的Agents、Areas、Bake、Object
分别用于代理的宽高、可爬坡角度、跨越高度设置,代理的区域代价设置,寻路路径烘焙设置,所选对象的区域设置、是否静态与外链接设置

新:
新版NavMesh包括四个组件,NavMeshSurface、NavMeshLink、NavMeshModifier、NavMeshModifierVolume
分别用于设置代理本身的寻路路径烘焙设置、根据层次结构来影响烘焙生成的模块、根据体积来影响烘焙生成的模块、新的外链接方式设置


三、新版的新增功能

本来想说新版的优点,但某种意义上来讲,新版不过是旧版的延伸罢了,还是要依赖旧版的,更像是一种补丁,或者说DLC,所以说用新增功能来表述更加合适

1.可根据不同的Agent的大小半径生成特定的导航网格(旧版全局只能使用一个Agent的参数)

2.可在运行时烘焙导航网格(旧版只能通过Bake选项卡在编辑时烘焙)

3.可以非常方便的修改某个物体或者任意范围的区域与代价设置(旧版只能通过Object选项卡中设置对象所属区域)

4.可以非常灵活的设置外链接(旧版只能被动生成或通过修改两点的position来设置外链接)


四、总结和参考资料

1.总结

无总结

2.参考资料

[1].Unity官方.新版NavMesh GitHub页面
[2].Unity官方.按名称添加注册表包
[3].Unity官方.新版NavMesh组件文档

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity NavMeshUnity 引擎的一个强大的导航系统,它负责处理场景的角色移动和寻路。它的源码是 Unity 引擎内部实现导航系统的一部分,主要包含了寻路算法和相关的数据结构。 NavMesh 源码通过 C++ 编写,提供了一系列函数和数据结构来实现导航功能。在源码,我们可以看到一些重要的概念,例如 NavMeshAgent、NavMeshPath 和 NavMeshObstacle。NavMeshAgent 是一个代表角色的类,它通过 NavMeshPath 计算寻路路径并自动移动,NavMeshObstacle 则用于处理障碍物的逻辑。 NavMesh 源码主要涉及到导航网格的创建、路径计算和角色移动等核心功能。它使用了一些经典的寻路算法,如 A* 算法和 Dijkstra 算法,以及一些优化技术,如三角化和节点合并等,来提高寻路的效率和质量。 在 NavMesh 源码,我们还可以看到一些与导航相关的数据结构,例如 NavMeshData、NavMeshDataInstance 和 NavMeshLinkData。这些数据结构用于存储导航网格的信息,包括顶点、边和面等。 此外,NavMesh 源码还提供了一些接口和回调函数,方便开发者对导航系统进行自定义和扩展。开发者可以根据自己的需求,修改和扩展 NavMesh 源码,以满足特定的导航需求。 总之,NavMesh 源码是 Unity 引擎导航系统的实现部分,包含了寻路算法和相关数据结构,通过对源码的分析和理解,开发者可以深入了解导航系统的原理和实现细节,以更好地应用和扩展导航功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值