导航网格和导航组件有关

这个导航组件有啥用呢? --- 答案就是用来进行寻路的

这个导航组件不仅帮我们获取对应的导航信息,而且还会帮我们进行位置的移动

有了导航组件的话,我们的游戏物体将会具有自动绕过障碍物的能力,以及在绕过障碍物的前提下计算最短路径的能力

(如何让摄像机拍摄的游戏画面和我们在场景中看到的一样呢? --- 选中摄像机然后按 ctrl + shift + f 就能将我们选中的摄影机拍摄的游戏画面和我们在场景中开到的画面同步)

给定一个区域,开始实现导航:


一.让导航系统对整个区域进行扫描计算,算出这个区域中那里是可以走的,那里是不可以走的

计算完后,导航会以网格的方式将可以走的区域覆盖,不可以走的区域就不覆盖(计算结果可视化)

第一步的实现方式:

1.将要扫描的区域在层级面板处全部选中,选中后在检查面板中点击静态的右边的那个小三角,然后选择静态导航(navigation static)

选择后在跳出的询问选项中选择确定

2.点击窗口(windows),选择AI,选择navigation(导航)

选择好后就能够在inspector检查面板中看到下面这个标签页

选择烘焙

所谓的代理半径和代理高度,其实这些参数都是一个圆柱体的参数,AI算法会根据这些参数生成一个圆柱体,而这个圆柱体就是用来作为人形模型的替代品的(也就是所谓的代理)

然后AI算法会根据这样的一个“圆柱体”人来对选中的区域进行计算,并生成可行走网格

(计算逻辑是只要这个圆柱体人能够走过去的都可以生成导航网格)

然后还有一个最大坡度(这个“圆柱体”人能够走上的最大的坡度),然后还有一个步高(“圆柱体”人每一步最多可以抬多高 --- 如果台阶高度高于步高的话,则这个圆柱体人就走不上这个台阶了)

3.设置好各项圆柱体人参数之后直接选择Bake进行烘焙,生成导航网格

上图就是烘焙完成之后的导航网格效果(蓝色较深的部分就是AI自动生成的导航网格)

解释一个现象,为什么导航网格处会出现边框呢?

当我们角色的重心(中心)部分来到边框线的时候(如下图的胶囊),我们的角色(圆柱体人)的边缘就和整个地图的边缘重合了,此时圆柱体人再往前移动一步的话就会导致角色(圆柱体人)掉出地图,所以边框外的部分都被识别为不可行走,所以会没有网格覆盖

总之有边框的地方都是圆柱体人会掉出去,卡住无法前进到的,被挡住的,跳不出去的地方

clear按钮具有清楚当前烘焙好的导航网格的功能


开始使用导航功能:

1.创建一个游戏物体,并给这个组件挂载一个导航分类里面的 Nav Mesh Agent :导航网格代理组件(Nav是navigation的缩写)

humanoid(人形) --- 选择导航类型中的导航设置选项,然后点击代理选项来设置替换游戏物体人形的“圆柱体人”的参数

在这个代理选项处我们可以点击上面那个横条下面的加号来添加新的圆柱体人(并且我们可以给这个圆柱体人命名) --- 其实这个圆柱体人的官方名字是导航代理

设置好导航代理之后我们就可以在代理类型中选择不同的导航代理来使用了

代理类型中的导航代理都是我们自己添加和创建的(除了第一个的Humanoid导航代理是默认创建的的)

当我们给一个游戏物体选择了导航代理之后,这个游戏物体就会具有两个碰撞检测边框了

一个是圆柱体人的碰撞边框,一个是游戏物体本身具有的碰撞边框

当我们调节导航网格代理组件中的基准偏移X参数的时候,我们可以让圆柱体人的碰撞边框垂直移动(上下移动)

速度是圆柱体人移动的最大速度;角速度是圆柱体人转动的最大速度;加速就是加速度,是每秒速度的增加量;停止距离就是当圆柱体人停下来时的刹车距离(做减速运动时的位移);选择自动刹车后,我们的游戏物体会在到达目标点后自动停下来

这个半径和我们的导航代理的圆柱体人的半径一致

质量:质量越高躲避效果越好

优先级:当只有一个路口,但是有两个在进行导航的游戏物体要通过时,谁的优先级高谁就先通过


2.在游戏物体上创建一个脚本来控制游戏物体的移动

声明一个导航网格代理组件变量来承接挂载到游戏物体上的导航网格代理组件对象

在声明这个对象的时候需要我们引入一个命名空间:

创建好变量后获取游戏物体上对应的组件对象并将其赋值给变量

然后通过射线检测的方式获取鼠标点击位置

如果按下鼠标,就根据鼠标按下的位置创建一个射线,并用射线变量来承接这个射线

然后创建一个射线信息类来承接射线的碰撞信息

然后对射线进行碰撞检测,将射线的碰撞点位置设为物体导航移动的终点

设为导航移动终点的方法就在上面

Unity --- 导航网格 与 导航的使用相关推荐

  1. 《UnityAPI.NavMesh导航网格》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Unity+NavMesh+CalculatePath+立钻哥哥++OK++)

    <UnityAPI.NavMesh导航网格> 版本 作者 参与者 完成日期 备注 UnityAPI_NavMesh_V01_1.0 严立钻 2020.08.27 #<UnityAPI ...

  2. Cocos Creator3.x NavMesh导航网格寻路(一)

    前言 在游戏开发过程中,寻路可能是大多数游戏都必不可少的功能.2d游戏中最常用的就是A* 寻路了.在3d游戏中,对于一些简单的,没有高度地面A* 寻路同时也是可以使用的,但是对于一些地面比较复杂的游戏 ...

  3. Cocos Creator3.x NavMesh导航网格寻路

    前言 在游戏开发过程中,寻路可能是大多数游戏都必不可少的功能.2d游戏中最常用的就是A* 寻路了.在3d游戏中,对于一些简单的,没有高度地面A* 寻路同时也是可以使用的,但是对于一些地面比较复杂的游戏 ...

  4. 了解导航网格 Navigation Mesh

    原文:https://www.jianshu.com/p/490a9128b248 这篇文章,首先会介绍什么是导航网格,它在 3D 游戏中起到了什么样的作用.然后会介绍目前导航寻路最常用的第三方开源库 ...

  5. 【Unity VR开发】结合VRTK4.0:导航网格限制移动区域

    前言: 当别人质疑你的时候千万不要当一回事,因为他只是看到了表面,也不要去相信公司领导给你的承诺,在你付出的时候,他会觉得很满意,但过去了这风波,你就会像空气一样,什么也不是,你永远没有资格跟他说三道 ...

  6. 《UnityAPI.NavMeshAgent导航网格代理》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Unity+NavMeshAgent+立钻哥哥++OK++)

    <UnityAPI.NavMeshAgent导航网格代理> 版本 作者 参与者 完成日期 备注 UnityAPI_NavMeshAgent_V01_1.0 严立钻 2020.09.10 # ...

  7. Unity3D导航网格,矩阵旋转,欧拉旋转

    旋转(欧拉.矩阵) 1.Transform:position(平移).rotation(旋转).scale(缩放). 2.四元数:应于transform组件中的rotation属性,这个属性的类型其实 ...

  8. 在Unity中使用NavMesh导航

    In this tutorial we will learn about Navmesh in Unity, how to create it and use it on your game as p ...

  9. UE4学习-AI导航网格的创建及修改

    文章目录 添加NavMeshBoundsVolume 调整网格 添加NavMeshBoundsVolume 如图所示,查找到NavMeshBoundsVolume,添加到场景. 因为我这里的场景大小是 ...

最新文章

  1. 唠唠SE的集合-10——Collections工具类
  2. 网络分析系统_MetagenoNets:在线宏基因组网络分析实操教程
  3. python三种数据类型详解_最全面的Python数据类型知识点讲解
  4. git clone 代理配置
  5. springboot 系列教程十:springboot单元测试
  6. 简单的C++线程类实现, windows平台
  7. PySpider问题记录http599
  8. oracle启动bat命令,ORACLE 启动 bat 脚本
  9. 【转】使用CSS 禁止文本选择
  10. python int函数的实现_python实现int函数的案例分析
  11. 服务器性能低下时正确的处理方法
  12. KVM虚拟化笔记(十)------kvm虚拟机扩充磁盘空间
  13. 一步步教你轻松学主成分分析PCA降维算法
  14. 【Django 2021年最新版教程36】 python django runserver 后台运行
  15. 数学建模优化模型简单例题_10次数学建模积累下的经验,希望能对你有所帮助!...
  16. Onvif协议:什么是Onvif
  17. 程序员一毕业就年薪 110 万竟然是靠……
  18. 2018年中小学计算机培训,2018年中小学网管员培训心得体会
  19. 创建数据库,库名为考生姓名拼音的缩写,例如考生姓名为张三
  20. 遗传算法及其应用_遗传算法及其广泛应用

热门文章

  1. 解决 git 文件夹不显示绿色图标和红色图标的问题
  2. 【c语言】矩阵的创建
  3. 高并发解决方案-mysql篇
  4. 利用局域网将电脑上的文件快速下载到手机上
  5. 如何查看手机登录IP地址
  6. 用 Python 基于均线交叉策略进行回测
  7. 阿里云 免费领服务器 具体步骤
  8. fa-cog css,完整的Font Awesome 3.2.1 图标参考
  9. win7+sp1安装vs2013
  10. 读《春秋》有感之八:荀罃设计车轮战