在项目开发中有时候,会用到unity自带的自动寻路系统NavMesh,今天就说下他的简单用法,NavMesh就是将游戏场景中复杂的结构组织关系简化为带有一定信息的网格,进而在这些网格的基础上通过一系列的计算来实现自动寻路,在导航中,只需要给导航物体挂载到导航物体上,导航物体便会自行根据目标点来寻找符合条件的路线,并沿着该路线行进到目标点。

一、实现物体通过自动寻路移动到指定地点

1.首先就是编辑一个简易的场景:

2.选中场景中的对象物体,将Static设置为Navigation Static复选框,unity就会通过选中的对象生成导航网格:

3.选择菜单栏中的Window--->Navigation命令,弹出Navgation视图。然后选择Navgation视图中的Bake按钮生成导航网格

4.就会生成相应的bake信息,其中蓝色区域就是可以进行移动的区域:

5.创建一个可移动的物体,这里就用一个胶囊体代替,为其添加NavMesh Agent组件,下面讲解一下这个组件的具体信息:

Base offset                与地面偏移高度
speed                        移动速度
Angular Speed             转角速度 ,转身速度    角速度: 最高转速(度/秒)。
Acceleration                 加速度,启动时的 最大加速度。
Stopping Distance         停止距离 ,,制动距离:制动距离。到目的地的距离小于这个值,代理减速。
Auto Traverse OffMesh Link 自动遍历OffMesh链接:自动移动并关闭OffMeshLinks
Auto Repath                 自动重新寻路:如果现有的部分已失效,获得新的路径。
Height                         高度:代理的高度(用于调试图形)。
Base offset                   基本偏移:碰撞几何体相对于实际几何体垂直的偏移。
Obstacle Avoidance Type 障碍躲避类型 :躲避的质量水平。
NavMesh Walkable          导航网格行走:指定代理可以遍历的导航网格层类型。这个参数很有用,在接下来的实例中可以用到。

6.为胶囊体添加移动脚本,通过鼠标点击移动到指定地点,代码如下:

    public Camera camera;  //相机    private NavMeshAgent navMeshAgent;// Use this for initializationvoid Start(){navMeshAgent = GetComponent<NavMeshAgent>();}// Update is called once per framevoid Update(){if (Input.GetMouseButtonDown(0)){if (navMeshAgent != null){//获取从主相机发出的一条射线Ray mRay = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit mHit;if (Physics.Raycast(mRay, out mHit)){//当碰撞到Terrain使获取到当时的位置if (mHit.collider.gameObject.tag == "Player"){navMeshAgent.destination = mHit.point;}}                              }}}

具体效果:

备注:如果想实现可以直接跳跃到指定的目标位置处,可以设置Drop和Jump Distance,然后重新Bake就可以了:

二、实现不同物体,沿自己的专有道路移动到指定位置

1.搭建自己想要的场景信息:

2.像上面的方式一样,对所有路径进行bake处理,但是唯一不同的需要设置不同的Layer,这里我们设置三个不同的layer

3.先为不同的路径设置对应的layer

4.为不同的移动的物体设置对应的layer:

5.然后添加移动代码:

    public GameObject TargetGo;public GameObject[] Solider;// Use this for initializationvoid Start(){for (int i = 0; i < Solider.Length; i++){Solider[i].GetComponent<NavMeshAgent>().destination = TargetGo.transform.position;            }}

6.移动效果

转载自:https://blog.csdn.net/yu1368072332/article/details/82980060

unity 自动寻路NavMesh相关推荐

  1. Unity手游之路十自动寻路Navmesh之跳跃,攀爬,斜坡

    转载 Unity手游之路<十>自动寻路Navmesh之跳跃,攀爬,斜坡 分类: unity2013-12-27 00:50 6545人阅读 评论(5) 收藏 举报 unity3dNavme ...

  2. Unity 使用NavMesh实现简易的摇杆功能

    Unity 使用NavMesh实现简易的摇杆功能 引言 在日常的unity项目开发中,经常会遇到角色移动的问题,在这里我们作一个建议的摇杆功能来控制角色的移动.要求如下: 摇杆在没有UI遮挡的任何位置 ...

  3. Unity手游之路九自动寻路Navmesh之高级主题

    http://blog.csdn.net/janeky/article/details/17492531 之前我们一起学习了如何使用Navmesh组件来实现最基本的角色自动寻路.今天我们再继续深入探索 ...

  4. Unity手游:自动寻路Navmesh 跳跃 攀爬 斜坡

    原地址:http://dong2008hong.blog.163.com/blog/static/46968827201403114644210/ 步骤 1.在场景中摆放各种模型,包括地板,斜坡,山体 ...

  5. unity 自动寻路

    导入Astar pathfinding 插件 物体添加 Pathfinder 组件 --生成障碍物 -- 选中敌人 添加 AIpath 组件 orientation 方向选择为2D或3D  调整--R ...

  6. unity 自动寻路爬楼梯效果

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; ...

  7. 在Unity中使用NavMesh导航

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

  8. 11.5项目小结(推箱子Unity导航系统)

    一.推箱子 重难点: 箱子移动,推动箱子. 1.移动: 思路: 按下WASD键,先改变player的角度,然后沿着Z方向移动: if(Input.GetKeyDown(KeyCode.W)){Vect ...

  9. 【Unity3D日常开发】自动寻路系统Navigation实现人物上楼梯、走斜坡、攀爬、跳跃

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 参考文章:列表 Unity3D深入浅出 - 导航网格自动寻路(Navigat ...

最新文章

  1. markdown数学公式全集
  2. leetcode-----给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。
  3. 解决样本不平衡问题的奇技淫巧 汇总
  4. hadoop com.mysql.jdbc.driver_hadoop – Impala找不到com.mysql.jdbc.Driver
  5. IDEA 一直不停的scanning files to index解决办法
  6. HighCharts点击柱形或饼块等加URL或Click事件
  7. == 和 equals() 区别
  8. 使用Prometheus和Grafana监视开放自由
  9. LeetCode 747. 至少是其他数字两倍的最大数
  10. 使用request获取访问者的真实IP
  11. 使用Visual Studio来创建动态库/静态库,并加载
  12. 函数的参数,参数为数组
  13. R Wilcoxon秩和检验
  14. Echarts图表移动端手机横屏展示
  15. 弱网优化、网络抖动、网络延时,这些问题,怎么处理?
  16. java map 缓存数据_java使用hashMap缓存保存数据的方法
  17. 设置元素旋转中心点(transform-origin)
  18. HTML table 属性 运用实例
  19. MySQL中length()、char_length()的区别和用法
  20. mybatis-plus 读写空间数据 geometry类型

热门文章

  1. 英汉互译教程---生词
  2. “颜经济”下的科技“美”学战役
  3. contenteditable H5聊天室发送表情
  4. #边学边记 必修4 高项:对事的管理 第5章 项目成本管理 之 项目成本估算
  5. HBase常见面试题
  6. 计算机教室网络平面示意图,计算机机房平面布置图.doc
  7. 计算机软考高级职称论文,关于计算机软考,这里可以解决你所有的问题
  8. BP神经网络C语言实现
  9. Kuhn-Munkres(KM算法)简单笔记
  10. java毕业设计——基于java+JSP+MySQL的电脑彩票销售管理系统设计与实现(毕业论文+程序源码)——彩票销售管理系统