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. GET_DDL提取目标元数据:ddl

    创建对象的语句就是了 提取表 set line 200 pages 50000 wrap on long 999999 serveroutput on SQL> select dbms_meta ...

  2. 从零使用Python测试。Testing Using Python.

    0. 写在前面 本人使用Python测试已有多年,略有些皮毛经验.每次有新员工入职,都会从头教一遍如何入门上手使用Python进行测试.趁这段有空,整理成文档,也好方便后续新员工学习.文章如有不妥之处 ...

  3. 径向基网络(RBF network)

    来源:http://blog.csdn.net/zouxy09/article/details/13297881 1.径向基函数 径向基函数(Radical Basis Function,RBF)方法 ...

  4. sphinx实时索引和高亮显示

    sphinx实时索引和高亮显示 时间 2014-06-25 14:50:58  linux技术分享 -欧阳博客 原文  http://www.wantlearn.net/825 主题 Sphinx数据 ...

  5. css设置黑体宋体等(转)

    代码如下: .selector{ font-family:"Microsoft YaHei",微软雅黑,"MicrosoftJhengHei",华文细黑,STH ...

  6. 修改文件的所有者失(chown: changing ownership of `uploads': Operation not permitted)

    在项目开发的时候,经常需要将文件上传到指定的目录下. 例如这次用thinkphp5的时候,需要在public目录下建立uploads目录用于存放上传的资源. 首先在命令窗口下输入: mkdir upl ...

  7. Android 开发笔记___EditText__文本编辑框

    常用属性: inputType:(代码中:setiputtype)设置输入类型,多种类型中间用"|" maxlength:最大长度,无法通过代码设置 hint:提示文本内容,(代码 ...

  8. 块级元素行内元素以及display属性

    1.什么叫做标签语义化? ->合理的标签做合适的事情 ->HTML中常用的标签都有哪些? (块状标签和行内标签) ->块状标签和行内标签的区别? (常用的有8条区别) 1)内联元素: ...

  9. OpenCV二维Mat数组(二级指针)在CUDA中的使用

    CUDA用于并行计算非常方便,但是GPU与CPU之间的交互,比如传递参数等相对麻烦一些.在写CUDA核函数的时候形参往往会有很多个,动辄达到10-20个,如果能够在CPU中提前把数据组织好,比如使用二 ...

  10. URL模块之parse方法

    url.parse(urlString , boolean , boolean) parse这个方法可以将一个url的字符串解析并返回一个url的对象. 参数: urlString指传入一个url地址 ...