一,Nav Mesh 介绍


unity官方文档:
导航网格(即 Navigation Mesh,缩写为 NavMesh)是一种数据结构,用于描述游戏世界的可行走表面,并允许在游戏世界中寻找从一个可行走位置到另一个可行走位置的路径。该数据结构是从关卡几何体自动构建或烘焙的。

我们可以这么理解:它是unity官方自带的一种寻路系统。我们可以通过它来制作简单的寻路,比如可以制作点击某个位置,让角色自动的绕开障碍走到目标点的效果,比如可以制作敌人AI,让它可以通过NavMesh绕开障碍追击我方单位。甚至可以在NavMesh中设置传送门,跳跃的起点落点,让这些效果也参与寻路的计算,成功计算出导航的捷径。

二,简单使用介绍

简单搭一个场景,创建player和target
//蓝–Player 红–Target

点击window–windows–Navigation

在Player身上挂载Nav Mesh Agent组件
导航网格代理 (NavMesh Agent) 组件可帮助您创建在朝目标移动时能够彼此避开的角色。代理使用导航网格来推断游戏世界,并知道如何避开彼此以及移动的障碍物。

点击地面cube,点击Static旁边小箭头,设置为Navigation Static

点击Navigation,点击Bake

可以看到场景中物体可以移动的敌方被烘焙成蓝色

如果此处未烘焙成功,首先检查是否将地面设置成Static
再看Scene窗口Gizmos设置,或许是已经烘焙成功了但是没有显示

写一个简单的脚本挂载在Player小球身上,告诉它它的目标点在哪

获取到Agent组件,通过agent.destination设置目标点,记得将目标点的蓝色方块拖拽进脚本

using UnityEngine;
using UnityEngine.AI;public class Player : MonoBehaviour
{private NavMeshAgent agent;public Transform target;void Start(){agent = GetComponent<NavMeshAgent>();agent.destination = target.position;}
}

这样的话就实现了一个简单的寻路小demo

三,功能详细介绍(unity2019.4)

导航网格代理 (NavMesh Agent)

Agent Type 来自Navigation,可以设置多个不同的Type。
==Base offset ==碰撞圆柱体相对于变换轴心点的偏移。
Steering
Speed 最大移动速度(以世界单位/秒表示)。
Angular Speed 最大旋转速度(度/秒)。
Acceleration 最大加速度(以世界单位/平方秒表示)。
Stopping distance 当靠近目标位置的距离达到此值时,代理将停止。
Auto Braking 启用此属性后,代理在到达目标时将减速。对于巡逻等行为(这种情况下,代理应在多个点之间平滑移动)应禁用此属性

Obstacle Avoidance
Radius 代理的半径,用于计算障碍物与其他代理之间的碰撞。
Height 代理通过头顶障碍物时所需的高度间隙。
Quality 障碍躲避质量。有五个选项从None到High Quality,如果拥有大量代理,则可以通过降低障碍躲避质量来节省 CPU 时间。如果将躲避设置为None,则只会解析碰撞,而不会尝试主动躲避其他代理和障碍物。
Priority 执行避障时,此代理将忽略优先级较低的代理。该值应在 0–99 范围内,其中较低的数字表示较高的优先级。

Path Finding
Auto Traverse OffMesh Link 设置为 true 可自动遍历网格外链接 (Off-Mesh Link)。如果要使用动画或某种特定方式遍历网格外链接,则应关闭此功能。
Auto Repath 启用此属性后,代理将在到达部分路径末尾时尝试再次寻路。当没有到达目标的路径时,将生成一条部分路径通向与目标最近的可达位置。
Area Mask Area Mask 描述了代理在寻路时将考虑的区域类型。在准备网格进行导航网格烘焙时,可设置每个网格区域类型。例如,可将楼梯标记为特殊区域类型,并禁止某些角色类型使用楼梯。(比如,我想让A可以爬楼梯,B不可以爬,就可以调整Area Mask做到此效果)

导航网格障碍物 (NavMesh Obstacle)

Shape 可选Capsule或者Box决定障碍的形状
选Box:
Center 定障碍位置
Size 定障碍大小
选Capsule
Center 定障碍位置
Radius 定障碍半径
Height 胶囊体的高度

Carve
勾选 Carve 复选框后,导航网格障碍物会在导航网格中创建一个孔。
Move Threshold 当导航网格障碍物的移动距离超过 Move Threshold 设置的值时,Unity 会将其视为移动状态。使用此属性可设置该阈值距离来更新移动的雕孔。
Time To Stationary 将障碍物视为静止状态所需等候的时间(以秒为单位)。
Carve Only Stationary 启用此属性后,只有在静止状态时才会雕刻障碍物

考虑到性能因素和本身导航的局限性,需要多进行实践来调整具体使用的参数。

网格外链接 (Off Mesh Link)

Start 描述网格外链接起始位置的对象。
End 描述网格外链接起始位置的对象。
Cost Override 如果值为正,则在计算处理路径请求的路径成本时使用该值。否则,使用默认成本(此游戏对象所属区域的成本)。如果 Cost Override 设置为值 3.0,则在网格外链接上移动的成本将是在默认导航网格区域上移动相同距离的成本的三倍。如果希望让代理通常优先选择步行,但当步行距离明显更长时使用网格外链接,则 Cost Override 设置将变得有用。
Bi-Directional 如果启用此属性,则可以在任一方向上遍历链接。否则,只能按照从 Start 到 End 的方向遍历链接。
==Activated ==指定寻路器 (pathfinder) 是否将使用此链接(如果将此属性设置为 false,则将忽略它)。
Auto Update Positions 如果启用此属性,当端点移动时,网格外链接将重新连接到导航网格。如果禁用,即使移动了端点,链接也将保持在其起始位置。
Navigation Area 描述链接的导航区域类型。该区域类型允许您对相似区域类型应用常见的遍历成本,并防止某些角色根据代理的区域遮罩 (Area Mask) 访问网格外链接。

Bake页面

可以设置Player的导航高度,半径,可上的楼梯高度,斜坡角度

Generated Off Mesh Links
烘焙的时候自动构成,上跳和下跃的网格外链接

注意:
掉下链接的生成由 Drop Height 参数控制。该参数可控制将要连接的最高掉落高度,将值设置为 0 将禁用生成。
定义掉下链接的轨迹时应使水平行程 (A) 为:2agentRadius + 4voxelSize。即,掉落将刚好落在平台的边缘之外。此外,垂直行程 (B) 需要大于烘焙设置的 Step Height(否则只会走下平台)并小于 Drop Height。应按体素大小进行调整,确保在体素化期间的任何舍入误差都不会阻止生成链接。应将 Drop Height 的值设置得比在关卡中测量的值略大,使链接正确连接。

跳过链接的生成由 Jump Distance 参数控制。该参数可控制将要连接的最远距离。将值设置为 0 将禁用生成。
定义跳过链接的轨迹时应使水平行程 © 大于 2*agentRadius 且小于 Jump Distance。此外,着陆位置 (D) 不得超过距离起始位置关卡的 voxelSize

Areas页

可以创建不同的Areas,设置不同的Cost,让角色对经过某些路线进行一个倾向。比如设置敌人虽然可以直接穿过毒气抓到主角,但是因为毒气的cost较高,可以让敌人尽量绕过毒气去抓主角,但是如果会绕的太远的话,敌人还是会选择穿过毒气。

学习笔记:unity自带寻路(导航)系统:Nav Mesh导航网格相关推荐

  1. Building Worlds In Unreal 学习笔记——24-28 UE4.26的河流系统/自动河床材质/浮力/交互水面

    Building Worlds In Unreal 学习笔记--24-28 UE4.26的河流系统/自动河床材质/浮力/交互水面 Lec24 用UE4.26的水来做一条河 River Water wi ...

  2. 28 Oracle深度学习笔记——ORACLE自带DBMS函数包

    28.Oracle深度学习笔记--ORACLE自带DBMS函数包 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50830889 ...

  3. 28.Oracle深度学习笔记——ORACLE自带DBMS函数包

    28.Oracle深度学习笔记--ORACLE自带DBMS函数包 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50830889 ...

  4. STM32学习笔记(三)丨中断系统丨EXTI外部中断(对射式红外传感器计次、旋转编码器计次)

    本篇文章包含的内容 一.中断系统 1.1 中断的定义 1.2 中断优先级 1.3 中断的嵌套 1.4 STM32中的中断系统 1.4.1 STM32的中断资源 1.4.2 嵌套中断向量控制器 NVIC ...

  5. 影像组学视频学习笔记[44(End)]-带95%置信区间的折线图、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/971eeaa03ec9 来源:简书,已获授权转载 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(44)主要 ...

  6. blfs(systemd版本)学习笔记-配置远程访问和管理lfs系统

    要实现远程管理和配置lfs系统需要配置以下软件包: 前几页章节脚本的配置:https://www.cnblogs.com/renren-study-notes/p/10390598.html wget ...

  7. 《神经科学:探索脑》学习笔记(第6章 神经递质系统)

    <神经科学:探索脑>第二版 中文版 学习笔记(合集) https://altli.blog.csdn.net/article/details/106306300 本章主要介绍神经递质系统的 ...

  8. Easy EDA #学习笔记02# |Arduino UNO 单片机最小系统PCB原理图 (ATMEGA328P单片机 AMS1117芯片5V转3.3V )

    3D模型图 顶层 丝印层 阻焊层(绿油) 锡膏层 铜箔层 基板 - 原理图符号自动编号:[设置]-[系统设置]-[原理图]选项 铜柱M3: 原理图原点设置: Crl + A 拖动 [放置]-[画布原点 ...

  9. HTML、CSS、JavaScript学习笔记 图文并茂 案例详实(再次系统学习-持续更新)

    HTML学习笔记 2020/7/11 P1~P31 HTML基础知识点 2020/7/12 P31~P92 P31~P61 HTML基础 P62~P92 CSS基础 2020/7/13 P93~P11 ...

  10. iTOP-RK3568开发板学习笔记(1)编译+烧录系统

    迅为 RK3568 开发板学习笔记 文章目录 准备开发环境 复制 Linux SDK 编译 Buildroot 烧录固件 准备开发环境 将 ITOP-RK3568 资料包中的虚拟机开发环境解压到自己的 ...

最新文章

  1. 很多人说单片机很简单,有些本专业学生为什么学起来这么吃力?
  2. 利用OpenCV的Grabcut()函数实现图像的前景与背景的分割-并对Grabcut()作详细介绍
  3. Java除法结果带小数、进一法的实现 Java问题通用解决代码
  4. 交互学习 Vue.js
  5. 软件的可扩展性与框架的可交互性
  6. Java8新特性总结 -7.新API和工具
  7. 机器学习代码实战——数值计算
  8. java fx combox,combobox – 带有FXML的组合框JavaFx
  9. 有道Java_有道词典java版下载-有道词典java豪华版v1.0.7 安卓版 - 极光下载站
  10. IMDB TOP 250 电影榜单
  11. SSD浅层网络_ssd目标检测
  12. 【专题】我国银行系科技子公司比较研究
  13. 测试语文读音标准的软件,普通话发音测试题库手机版apkv3.3.1安卓最新版
  14. C# 键盘中的按键对应的KeyValue
  15. Poco库使用:任务管理器TaskManager
  16. 搜索引擎介绍系列——数据采集
  17. 单点登录与第三方登录 + CSRF-XSS-DNS-DDOS-SQL攻击
  18. 如何干净、彻底地删除软件、文件夹
  19. 郭德纲致郭麒麟诫子书
  20. NJ4X源码阅读分析笔记系列(一)——项目整体分析 1

热门文章

  1. [渝粤教育] 重庆工程职业技术学院 数控机床编程与操作 参考 资料
  2. AutoCAD Plant 3d管道设计基础到中高级进阶视频教程
  3. 将swf转成html5代码,一键把swf转为html5 canvas动画 Fanvas
  4. 啊,久违的 win7 开机画面!
  5. MapGIS 6.7 数字非标准分幅影像校正方法
  6. 如何快速推广你的博客
  7. 安装NVIDIA显卡驱动
  8. nc 二次开发_金蝶云星空(K3CLOUD)和用友NC对比
  9. 如何在WPS2000中插入AutoCad图形文件(转)
  10. AlphaControls TsSkinManager 控件