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. LeetCode 533. Lonely Pixel II (孤独的像素之二) $

    Given a picture consisting of black and white pixels, and a positive integer N, find the number of b ...

  2. 一个简单的makefile文件编写

    下午闲来无聊,就打开很久没动过的linux系统想熟悉熟悉在linux上面编译代码,结果一个makefile文件搞到晚上才搞定,哈哈! 先把代码简单贴上来,就写了一个冒泡排序: sort.h: #ifn ...

  3. Ubuntu 共享 转载

    Ubuntu 14.04 文件服务器--samba的安装和配置 听语音 | 浏览:29526 | 更新:2014-10-10 22:28 | 标签:ubuntu 1 2 3 4 5 6 7 分步阅读 ...

  4. MD5加密(前端JS)

    var password = $('#password').val();//获取密码框的值 var passwordMD5 = md5(password);//调用MD5,传入密码,返回MD5加密后的 ...

  5. RE: Javascript分页处理

    背景: 调用PHP后端给的接口,以实现分页的功能.由于我是没造轮子的能力,所以翻了不少技术博客,经过整合才算完成整个分页功能.从一番查阅中,不难看出大概分为两种不同的分页: 一种是纯前端的,就是在一次 ...

  6. Oracle Database 12c Release 2安装详解

    第1章 Oracle Database 12c Release 2安装详解 1.1 下载方法 oracle官网https://www.oracle.com 1)打开官方网站,找到下载连接 2)选择更多 ...

  7. chrony软件使用说明

    1.1.1 chrony简介 Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确. 它由两个程序组成:chronyd和chronyc. chronyd是一个后 ...

  8. Nodejs前端服务器压缩图片

    Nodejs作为前端服务器,自然能承担处理图片的能力, 使用GM for nodejs 作为图片处理器,调用ImageMagick处理图片 使用ImageMagick var imageMagick ...

  9. [转载] 基于Redis实现分布式消息队列

    转载自http://www.linuxidc.com/Linux/2015-05/117661.htm 1.为什么需要消息队列?当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消 ...

  10. linux操作系统基础篇(八)

    shell脚本的变量以及正则表达式 一.变量 含义:程序的运行就是一些列状态的变量->用变量值的变化去表示. 命名规则 以字母或下划线开头,剩下的部分可以是:字母.数字.下划线. 最好遵循下述规 ...