欢迎大家继续学习 Unity 游戏编程进阶 本节我们介绍
Unity 导航系统的基本使用方法
本节 将采用
PPT 讲解加项目演示的方式介绍导航系统基本用法
在项目演示环节,我们演示了导航系统基本用法在《慕课英雄 2》的
具体应用,希望大家可以根据自己的专业基础和学习能力 从以下三种方法中选择一种来学习。
第一种方法,先看 PPT 讲解,对相关的知识有一个系统的了解
然后观看项目演示视频,学习知识点的应用。
第二种方法 先看项目演示视频,了解知识要点的具体运用,再回到
PPT 讲解阶段 有针对性地学习相关知识要点。
第三种方法,跳过 PPT 讲解 直接进入项目演示,通过理解项目中知识要点的运用
完成相关知识要点的学习,不需回顾 PPT 讲解
下面进入 PPT 讲解阶段。
FPS RTS 游戏都要求 NPC 能够根据目标位置,自动计算到达目标的路径 具有自动寻路能力。
Unity 能够生成寻路所需要的 Navigation Mesh 导航网格,方便游戏中的
NPC 和动态物体自动寻路 导航网格将游戏场景中复杂的对象结构组织
化简为带有一定信息的网格,在这些网格的基础上,通过一系列计算,实现自动寻路 Unity
能够自动生成 Nav Mesh 导航网格 Unity
引擎中 Nav Mesh Agent 是配合导航网格使用的导航代理组件
给物体添加导航代理组件后,物体会自动根据目标位置和导航网格寻找合适的路线
沿着找到的路线移动到目标位置 生成导航网格包括两个步骤,第一步
标记场景中用于生成导航网格的物体;第二步 在 Navigation
视图中点击 bake 按钮,生成导航网格 下面我们用一个简单的例子说明在
Unity 中生成导航网格的方法 [空白_录音]
首先,我们标记场景中用于生成导航网格的物体 具体操作如本页 PPT 所示。
选中场景中的地面、 斜坡和台阶等物体 在检测视图右上角,单击
Static 标签右侧的小三角 在弹出的下拉列表中勾选 Navigation Static
表明我们选中的物体用于生成导航网格 [空白_录音]
接着我们选择菜单栏中的 Window 菜单 点击 Navigation
菜单项,打开 Navigation 视图 Navigation
视图用于设置导航网格的相关参数 以及生成导航网格。
单击 Navigation 视图右下角的 Bake 按钮,生成导航网格
烘焙完毕后 场景视图中会出现烘焙的结果,如本页
PPT 所示 设置 Navigation 单个的属性的物体,表面上都出现了蓝色的导航网格
下面我们为需要导航的物体添加 Nav Mesh Agent
导航代理组件 方法如本页 PPT 所示。
选中场景中需要导航的胶囊体对象 在菜单栏中依次点击
Component,Navigation,Nav Mesh Agent
就完成了导航代理组件的添加 本页
PPT 展示了物体的导航代理组件
导航代理组件可设置的属性包括代理的尺寸信息 运动属性,以及和闪避、
寻路等行为有关的属性 物体的寻路行为需要使用脚本进行控制
我们把 AgentControl 脚本绑定到已经添加了导航代理组件的胶囊体对象上
把脚本的 Target 属性设置为场景中的红色小球
执行游戏预览 我们用鼠标点击屏幕任意位置,指定胶囊体对象的导航目标
红色小球会出现在导航目标的位置,接着胶囊体对象会从它当前所在的位置出发
按照一个合理的路径,移动到红色小球标识的导航目标位置 下面我们讲解
AgentControl 脚本中几个关键函数 第一个是 Start
函数 我们在 Start 函数中获取游戏对象的 NavMeshAgent
导航代理组件 把它保存在 Agent 字段中
第二个是 Update 函数,它会每帧捕获用户的输入
当用户使用鼠标点击屏幕后 脚本会根据 Target
对象,也就是红色小球 放置在用户鼠标单击的位置,用来标记导航目标位置
我们把小球的 Position 属性赋值给导航组件的 destination
属性 利用上述代码,导航组件就会自动计算出一条路径
控制物体沿着这条路径移动到目标位置 下一节我们介绍导航网格的设置方法
下面是演示环节,我们在 Unity
游戏编程基础中 使用地形系统创建的游戏场景,不利于演示导航网格
全局光照等技术,因此在 Unity 游戏编程进阶中 我们使用了全新的游戏场景。
在演示环节 我们给大家介绍这个全新的游戏场景