1.介绍
NavMesh:是一种根据场景中几何图像创建出来的3D网格。它会使导航和寻路变得很容易。
简单来说,NavMesh是一种我们在游戏世界中,可以让游戏角色在其表面行走并且导航的平面。
2.注意
这只对3D的环境有效。 
显然,首先需要搭建环境场景。
这是我使用的场景:

3.现在来看看如何使用NavMesh

在你完成环境搭建后,从窗口菜单打开Navigation 窗口。
现在,选中你所有的环境组件并且确保Navigation菜单中的Navigation Static 这一项勾上了。
这里的,Navigation Static意味着在游戏运行期间,这个游戏对象不会移动

点击Bake按钮来创建NavMesh。你将会看到环境中覆盖有蓝色的一层表面。蓝色
的一层叫做可行走区域,也就是让我们的玩家或者敌人可以畅通无阻的地方。
 

你可以在Navigation 窗口的Bake标签下,通过调节参数来改变可行走的区域大小。

你可以使用这些参数,来设定可跨越高度,可穿行横切面最大值,可跨跃的距离等等。

4.敌人追踪玩家

这样,我们游戏中已经有了NavMesh了。现在看看怎样让角色在这些NavMesh上进行移动。
首先,从层级视图选中角色并从检视面板添加NavMesh Agent组件。
我建议,创建的角色最好是一个玩家和两个敌人。通过改变这些值你可以改变你角色导航的行为。
我用一个比较简单的移动脚本使敌人去追踪玩家 。
 using UnityEngine.AI; 
1 public class EnemyMovement : MonoBehaviour
{
Transform player;
// 获取玩家位置 NavMeshAgent nav;
// 获取NavMesh Agen't void Awake ()
{
// 引用赋值
player = GameObject.FindGameObjectWithTag ("Player").transform; // 如果场景层级过多,建议不要使用 FindGameObjectWithTag的方法
// 鉴于这种情况,可以把玩家设置成公共变量,或者从检视面板中设置引用 nav = GetComponent <NavMeshAgent> ();
} void Update ()
{
// 设置目标为玩家的寻路代理的目的地
nav.SetDestination (player.position);
}
25}
这个脚本中我们需要着重注意的是NavMeshAgent所带的SetDestination()方法。如你所见我将这个函数放在了Update中执行,因为我们的玩家在持续地进行移动。
如果游戏中的目标不会改变他们的位置,那么你可以在Start函数中使用这个方法,或者在代码中任何其他适合你需求的地方使用这个方法。
然后剩下的就都交给NavMeshAgent去做了。
 
 
声明:本文章来自网络前辈所汇而成,有不懂的地方小白建议大家去原网址http://vr.99.com/news/06232017/011147334.shtml

简单使用Unity导航系统(小白之路)的更多相关文章

  1. Jacoco+Jenkines小白之路

    Jacoco+Jenkines小白之路 最近工作中正在推广jacoco的增量覆盖率的统计,想学习一波,纯粹采坑中,适合小白学习jacoco. 一.代码覆盖率 引入代码覆盖率 : 代码覆盖率是指对现有代 ...

  2. 1、Java小白之路前言

    大二一年准备好好学习Java,养成一个良好的习惯写博客,但是由于各种各样的原因,并没有坚持下来.而正好又赶上大三结束,去实习,发现自己的基础还是有些薄弱,所以决定,重新走上这条Java小白之路. 时隔 ...

  3. 喵的Unity游戏开发之路 - 玩家控制下的球的滑动

  4. 喵的Unity游戏开发之路 - 推球:游戏中的物理

    很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本文不 ...

  5. 喵的Unity游戏开发之路 - 轨道摄像机

    前言        很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3 ...

  6. 喵的Unity游戏开发之路 - 在球体上行走

    很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本文不 ...

  7. 喵的Unity游戏开发之路 - 游泳

    原文: https://mp.weixin.qq.com/s/-ERFNB1GRZ6UAkHOhP9UQw 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀 ...

  8. 喵的Unity游戏开发之路 - 互动环境(有影响的运动)

    如图片.视频或代码格式等显示异常,请查看原文: https://mp.weixin.qq.com/s/Sv0FOxZCAHHUQPjT8rUeNw 很多童鞋没有系统的Unity3D游戏开发基础,也不知 ...

  9. 喵的Unity游戏开发之路 - 多场景:场景加载

    如果丢失格式.图片或视频,请查看原文:https://mp.weixin.qq.com/s/RDVMg6l41uc2IHBsscc0cQ 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始 ...

随机推荐

  1. Java基础总结--流程控制

    Java流程控制* 顺序结构--最常见的执行情况,语句按照出现的先后次序依次执行.* 判断结构--对条件进行判断,执行相应的语句.有三种常见的形式< if(判断条件){语句;}--为真执行语句, ...

  2. 白夜追凶 :手 Q 图片的显示和发送逻辑

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:陈舜尧 导语: "这张图片在快捷发图栏背景是黑色的,为啥发到AIO(会话窗口)里背景就变成白的了?" 通过一个bug ...

  3. mysql中多个left join子查询写法以及别名用法

    不多说 直接上语句   SELECT     a.id,     a.thumbNail,     a. NAME,     a.marketPrice,     a.memberPrice,     ...

  4. OpenCV Image Watch 调试插件

    昨晚偶然发现vs2012的这个很神奇的插件,对于经常使用opencv的人来说,这个插件无疑是我们的调试神器.今天马上下载试用,感觉超级棒!~以后要想查看图像结果,不用再imshow了! Image W ...

  5. Ionic3 遇到的一些错误-Error: Cannot find module 'reflect-metadata'

    E:\Projects\ionic\myApp5>ionic serve Error: Cannot find module 'reflect-metadata' 解决方法: npm insta ...

  6. Javascript中的Trait与代码重用

    Javascript中的Trait与代码重用 来源 http://www.ituring.com.cn/article/64103 我们知道,OOP中最普遍的代码重用方式是通过继承,但是,继承有一些缺 ...

  7. TCP协议的滑动窗口协议以及流量控制

    参考资料 http://blog.chinaunix.net/uid-26275986-id-4109679.html http://network.51cto.com/art/201501/4640 ...

  8. HDU 6121 Build a tree(找规律+模拟)

    Build a tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)To ...

  9. pandas数据结构练习题(部分)

    更多函数查阅http://pandas.pydata.org/pandas-docs/stable/10min.htmlimport pandas as pd#两种数据结构from pandas im ...

  10. Windows下caffe的配置和调用caffe库(二)

    二. Caffe库的调用: 新建空白项目,将配置管理器更改为x64运行方式.(release和Debug均可). Debug配置: 1)      包含目录: D:\caffe-master\incl ...