Nav Mesh Agent

效果图

  1. 创建地面.
    1.1 在Hierarchy下创建一个空的游戏对象命名为Ground:
    右键 –> Create Empty –>重命名为Ground.
    Ground下面创建五个Plane游戏对象:
    右键 –> 3D Object –> Plane, 创建一个之后进行复制即可.`
    提示:创建一个之后,按Ctrl + D 进行复制即可.
    1.2 两个Plane分开,中间用另外三个Plane游戏对象进行连接.

  2. 添加导航.
    2.1 先添加导航窗口: 菜单栏Window –> Navigation
    2.2 进行烘焙: 选中Ground下所有的Plane –> 点击Inspector下static边上的三角形 –> 选中Navigation Static –> 切换到Navigation窗口 –> 点击Bake –> 直接点击 Bake进行烘焙.

  3. Hierarchy下创建一个Cube作为导航的目标点.创建一个Sphere最为Player.
    选中Player –> Inspector界面下Add Component 添加组件 –> 搜索Nav Mesh Agent(实现自动导航)组件进行添加 –> 在Project下创建一个Scripts用来存放C#脚本 –> 右键Create一个C#脚本,起名字为PlayController
  4. 编写C#脚本
       public class PlayController : MonoBehaviour{//定义接收导航网络组件private NavMeshAgent nav;//定义目的地的方块public Transform cubePos;void Start(){//赋值nav = this.transform.GetComponent<NavMeshAgent>();}void Update(){//设置目的地的位置为方块的位置nav.SetDestination(cubePos.position);}}       

编写完成后, 将脚本拖拽到之前创建好的Sphere上面, 然后会在Inspector界面下看到该脚本下有一个CubePos,是用来设置目的地的位置,直接将之前创建好的Cube拖拽到CubePos上面即可.
5. 添加材质.
5.1 在Project中创建一个空的文件夹Metarials用来存放所有材质.
5.2 右键 –> Create –> Material –> Albedo –> 设置颜色 –> 拖动创建好的Material到游戏对象上面.
注意:一个材质只能使用一种颜色,不能为多个游戏对象添加颜色.可以创建多个材质来实现.
5.3 为桥和小球添加相应颜色的材质.
5.4 Ctrl + D 复制多个小球, 这里创建了三个材质,颜色分别是Red,Green,Blue.所以创建一个三个空的游戏对象用来存放不同颜色额的小球.
可以运行看一下效果.
6. 指定导航路径.
6.1 在之前添加的Navigation窗口下的Areas里面添加三个区域, Name分别为Red, Green, Blue.
6.2 分别选中三座桥,在各自的Navigation窗口下的Object里的Navigation Area中选中相对应的颜色(默认是地面).之后重新烘焙.
注意:改过Navigation Area之后要重新烘焙.
6.3 导航走的区域已经分好了, 但是默认状态下可以走所有的区域.下面修改每种颜色的Sphere可以走的区域. 选中需要修改的Sphere –> 在Nav Mesh Agent 组件里面的最下方有个 Area Mask –> 选中 Walkable(默认是全部) 和 自己可以走的颜色.
7. 运行之后会发现小球会在cube的外面转圈, 这是因为小球是有质量的, 可以在
Nav Mesh Agent组件中的Quality调整为None, 在运行.

面板中的一些参数

Object
Navigation Static 勾选后表示该对象参与导航网格的烘焙
Generate OffMeshLinks 勾选后可以跳跃导航网格和下落
Navigation Area 物体烘焙网格属于哪个图层, 可通过代码让游戏人物走不同的路
Bake
Agent Radius 具有代表性的物体半径, 半径越小生成的网格面积越大.和边缘的距离
Agent Height 具有代表性物体的高度
Max Slope 斜坡的坡度
Step Height 台阶高度
Drop Height 允许跳跃最大下落距离
Jump Distance 允许最大的跳跃距离
Manual Voxel Size 手动输入像素值
Min Region Area 网格面积小于该值则不生成导航网格
Height Mesh 选中该项,将会保存高度信息,同事也会消耗一些性能和存储空间

Nav Mesh Agent 组件面板

Agent Size 尺寸控制
Radius 物体的半径
Height 物体的高度
Base Offset 偏移度
Steering 行动控制
Speed 物体进行的最大速度
Angular Speed 行进过程中转向是的角速度
Acceleration 物体的行进加速度
Stopping Distance 距离目标点小于多远距离后便停止行进
Obstacle Avoidance 躲避障碍参数
Quality 质量
Priority 优先级
Path Finding 路径寻找
Auto Traverse Off Mesh Link 是否采用默认方式度过连接路径
Auto Repath 在行进过程中,因某些原因中断的情况下,是否重新开始寻路
Auto Mask 自动遮罩

Unity3D自动寻路之Nav Mesh Agent(导航网格代理)相关推荐

  1. 【Unity】导航基本组件:Nav Mesh Agent、Off Mesh Link、Nav Mesh Obstacle

    文章目录 Nav Mesh Agent 导航网格代理 属性 Off Mesh Link 网格外链接 属性 链接是否成功 静态障碍物和动态障碍物 静态障碍物 动态障碍物 Nav Mesh Obstacl ...

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

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

  3. Unity --- 导航网格 与 导航的使用

    导航网格和导航组件有关 这个导航组件有啥用呢? --- 答案就是用来进行寻路的 这个导航组件不仅帮我们获取对应的导航信息,而且还会帮我们进行位置的移动 有了导航组件的话,我们的游戏物体将会具有自动绕过 ...

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

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

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

    前言 第一篇我们简要概述了新版NavMesh的一些新增功能,以及旧版的对比.本篇我们来讲一讲NavMeshSurface.NavMeshLink这两个组件的参数以及如何应用,接下来就进入正题吧. 本系 ...

  6. 了解导航网格 Navigation Mesh

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

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

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

  8. [unity3d]recast navigation navmesh 导航网格 寻路算法 源码分析

    recast navigation navmesh导航网格算法源码分析 Author:  林绍川 recast navigation navmesh是unity3d ue4内置的寻路算法 本文为了方便 ...

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

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

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

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

最新文章

  1. 天线巴伦制作和原理_一种基于LTCC技术的新型Marchand巴伦滤波器
  2. 海明嵌入Hamming Embedding生成Binary Signature之matlab程序代码
  3. KDD 2021 | 小红书推荐多样性解决方案:SSD在质量、多样性之间获得较好权衡
  4. C#DotNetBar TabControl将水平标签设置成竖直
  5. 学维修电脑要多久_学厨师要多久才出师
  6. 3种双集群系统方案设计模式详解
  7. C语言 makefile
  8. OPC数据访问方法简介
  9. python调用c++深度学习模型生成的dll(传入图片,返回多个结果)
  10. Hi3861开发板搭建环境
  11. 刚安装了极域电子教室,默认密码是什么?(教师端)
  12. 读取自定义配置文件属性值
  13. android 常用图像密码,这几种Android图形密码最常用
  14. 建模你不能不知道这些网站能接单 | 建议收藏
  15. Google推出拼音输入法了!
  16. 中国跨5个时区,东南西北的极点坐标信息
  17. LNMP部署应用——架设Discuz论坛——实验过程超详细!快来跟做!
  18. eclipse查看properties
  19. linux进程命令面试,面试常问的 25+ 个 Linux 命令
  20. Unity 3d项目的崩溃收集机制

热门文章

  1. activemq事务处理及签收
  2. 软件测试第三章课后习题
  3. RT-Thread与cubemx|74HC595驱动数码管详解
  4. 新中大银色快车财务数据完美迁移到用友NC65
  5. win7开机启动项设置_怎么个性化设置win7系统开机登录画面【详细介绍】
  6. Ubuntu 下安装 QQ
  7. ubuntu彻底卸载Nvidia显卡驱动
  8. lockdir.exe(文件夹加密软件)重装系统后打不开的解决办法
  9. mysql 2008 安装图解_SQL Server 2008 安装图文教程
  10. discuz 登录代码流程