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. 运用El表达式截取字符串/获取list的长度

    ${fn:substring(wjcd.lrsj, 0, 16)} 使用functions函数来获取list的长度 ${fn:length(list)} 引入 <%@ taglib prefix ...

  2. LeetCode 461. Hamming Distance (汉明距离)

    The Hamming distance between two integers is the number of positions at which the corresponding bits ...

  3. shell参数处理模板

    存一份模板,以后简单参数处理就用它了 #!/bin/bash while getopts h:ms option #选项后面的冒号表示该选项需要参数 do case "$option&quo ...

  4. centos 安装giblab

    本文章转载自:http://www.cnblogs.com/fanjingfeng/p/6665597.html 一, 服务器快速搭建gitlab方法 可以参考gitlab中文社区 的教程 cento ...

  5. Python多进程应用

    在我之前的一篇博文中详细介绍了Python多线程的应用:  进程,线程,GIL,Python多线程,生产者消费者模型都是什么鬼 但是由于GIL的存在,使得python多线程没有充分利用CPU的多核,为 ...

  6. 在mac OS10.10下安装 cocoapods遇到的一些问题

    今天有个朋友问了我一个问题:为什么我安装cocoapods不成功,报 sh: line 1: 997 Abort trap: 6 /Applications/Xcode.app/Contents/De ...

  7. js实现获取短信验证码倒计时

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  8. Toxophily

    Problem Description The recreation center of WHU ACM Team has indoor billiards, Ping Pang, chess and ...

  9. The Worm Turns

    The Worm Turns Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  10. html-webpack-plugin的使用

    使用前第一步:npm install 安装html-webpack-plugin --save--dev || --save  (tips:--save--dev跟--save最大的区别就是--dev ...