【Unity3D】分离路面导航
1 前言
导航系统中介绍了导航的基本用法,但是不能解决分离路面导航问题。如下图,胶囊体需要导航到立方体位置,但是路面不连续,烘焙(Bake)导航网格后,断开处也没有导航网格,因此,胶囊体导航到分离路面边界处就会停下来。
角色在分离路面边界处,存在两种行为:1. 水平跳,2. 往下跳或往上跳。Unity3D 针对这两种情况提供了对应的解决方案:
- 水平跳:给分离路面对象勾选 Generate OffMeshLinks 属性;
- 往下跳或往上跳:在路面分离处创建 2 个空对象作为跳跃点,给一个跳跃点添加 OffMeshLink 组件,并将 2 个跳跃点对象拖拽到 OffMeshLink 组件中。
说明:水平跳场景下,也可以使用添加 OffMeshLink 组件方式;往下跳或往上跳场景下,不能使用勾选 Generate OffMeshLinks 属性方式。
2 通过 Generate OffMeshLinks 实现分离路面导航
1)游戏界面
2)设置 Navigation Static、Generate OffMeshLinks
依次选择【Window→Navigation】打开导航窗口,再选择 Object 选项卡,选中两个地面,勾选 Navigation Static、Generate OffMeshLinks,如下:
3)烘焙导航网格
切换到 Bake 选项卡,设置 Max Slope、Step Height、Drop Height、Jump Distance 属性如下:
点击 Bake 烘焙导航网格,导航网格显示如下:
其中,浅蓝色表示导航可以走的区域,中间的连接线表示导航跨越线。
4)添加 NavMeshAgent 组件
给胶囊体添加 NavMeshAgent 组件。
5)添加脚本组件
NavigationController.cs
using UnityEngine;
using UnityEngine.AI;public class NavigationController : MonoBehaviour {private NavMeshAgent navMeshAgent;private Transform target;private void Awake() {navMeshAgent = GetComponent<NavMeshAgent>();target = GameObject.Find("Target").transform;}private void Update() {navMeshAgent.SetDestination(target.position);}
}
说明:Target 是小立方体, NavigationController 脚本组件挂在胶囊体上。
6)运行效果
3 通过 OffMeshLink 组件实现分离路面导航
在分离路面边界处往下或往上跳的场景,使用 Generate OffMeshLinks 方法,在边界处仍然无法烘焙出导航连接线,此时需要使用到 OffMeshLink 组件。
1)游戏界面
2)设置 Navigation Static
依次选择【Window→Navigation】打开导航窗口,再选择 Object 选项卡,选中两个地面,勾选 Navigation Static,如下:
3)添加 OffMeshLink 组件
在分离路面边界处创建 2 个空对象,并重命名为 Start、End,给 Start 添加 OffMeshLink 组件,并将 Start、End 拖拽到 OffMeshLink 组件中,如下:
补充:由于空对象不可见,为方便调整空对象位置,可在 Inspector 窗口给空对象设置 Icon。
4)烘焙导航网格
Navigation 窗口切换到 Bake 选项卡,点击 Bake 烘焙导航网格,可以看到 2 个空对象之间有一条连接线。
5)添加 NavMeshAgent 组件和脚本组件
同第 2 节。
6)运行效果
【Unity3D】分离路面导航相关推荐
- 【Unity3D】Unity3D技术栈
1 前言 本文梳理了笔者在学习 Unity3D 的过程中,对 Unity3D 的理解和学习路线,以帮助读者循序渐进地学习 Unity3D,后续笔者仍会持续更新 Unity3D 相关技术栈,并同步到本文 ...
- 【Unity3D】动态路径特效
1 前言 本文通过导航系统(NavMeshAgent)和线段渲染器(LineRenderer)实现了角色走迷宫和绘制路径功能,同时实现动态路径特效. 导航系统的介绍详见博客:导航系统.分离路面导航.动 ...
- Unity基础知识汇总
2.Unity相关知识 2.1 Unity介绍 Unity成为一款可以轻松创建游戏和三维互动的开发工具,是一个专业跨平台游戏引擎 Unity操作快捷键 Ctrl N New Scene 新建场景 Ct ...
- Navigation导航寻路RecastDemo讲解
在2D游戏中,我们常常使用A星算法,基于方形网格进行寻路. (图:2D游戏中的A星寻路) 但是在3D游戏中,场景巨大,2D的方形网格寻路虽然可用,但效率极低. 这时候,用NavMesh导航网格寻路是最 ...
- 滴滴单通道语音分离与目标说话人提取和抑制技术进展
桔妹导读:为了将目标语音从含多种干扰(如车噪.导航音.车内FM等)的复杂声学环境中分离出来同时尽量减小对原始语音的损伤,提高人机交互.客服听音等的效率,滴滴结合了在前端信号处理的多年研发积累与该领域的 ...
- 视频教程-Unity3D实战入门之第三人称射击游戏(TPS)-Unity3D
Unity3D实战入门之第三人称射击游戏(TPS) 6年程序开发经验,精通C/C++/C#编程. 曾担任过Unity3d游戏开发主程和Unity3d游戏开发讲师,熟悉Unity3d的UI系统.物理引擎 ...
- Unity3D实战入门之第三人称射击游戏(TPS)-伍晓波-专题视频课程
Unity3D实战入门之第三人称射击游戏(TPS)-327人已学习 课程介绍 这是一套第三人称射击游戏开发的入门基础课程. 本课程以一款小型的第三人称射击游戏为案例,手把手教你如何搭建 ...
- python什么框架写游戏好_免root修改器框架,免root框架大全,游戏框架免root:《游戏框架》 用python做游戏用什么框架-南开游戏网...
<游戏框架> 用python做游戏用什么框架 2020-11-25 17:37:36 广告 游戏作为一种分类框架 一个好的网计作品就必然有一个号的网页,那么我们来分析一下,在网页设计过程中 ...
- FME会员期刊(2012秋季版)——更新完毕
原文发布时间:2012-11-19 11:20:01 原文:http://www.safe.com/about/newsletter/ 整理:FME技术支持小组 飞机,火车,汽车-和激光 对于上了年纪 ...
- 国家高技术研究发展计划(863计划) 2015年度项目申报指南
信息技术领域 1. 超级计算机 1.1 高效能计算机(三期) 高效能计算机一期和二期集中部署了新一代高效能计算机系统.超算应用社区.典型行业应用软件开发等课题.三期将在前期的基础上,重点支持E级超级计 ...
最新文章
- 关于计算机设计的论文,计算机的设计论文.doc
- 程序员为什么老得快_中国程序员工资为什么那么高?老程序员:淘汰速度快,入行成本大...
- iphone如何信任软件_苹果手机“未受信任的企业级开发者”怎么解决?
- CRM My Opportunity max hit的技术实现
- 微信公众平台 分享到朋友圈 js代码
- eclipse 如何关联git_git的相关操作
- 10.66道经典的Java基础面试题集锦为何晴空
- mac 下php运行bug
- Node on Mac 初步
- 超简单!Oneplus一加手机安装谷歌服务框架Google Play商店下载应用,安装谷歌三套件
- 1分钟快速实现高效的扫描二维码,急速识别手机相册二维码
- 城市区域二手房信息python爬取、保存和初步分析—笔记
- python变量与声明
- gt,gte,lt,lte缩写代表的意思
- riak教程 java_Riak学习(2):java连接Riak服务,使用Protocol Buffers连接
- windows SDK模拟游戏钢琴的实现(一)
- 推荐系统: 问题、算法与研究思路
- ERP项目经理的“5+4”素质能力模型
- Day48(List接口,ArrayList,LinkedList,Vector,Set接口,HashSet,LinkedHashSet,TreeSet,自然排序,定制排序)
- 数据挖掘模型生命周期管理
热门文章
- 什么是公网ip?--快解析科普
- 日常工作记录---在虚拟机中进行slam建图
- CPM、CPC、CPA、PFP、CPS、CPL、CPR等广告术语是什么意思
- 互联网晚报 |10/12 |中国汽车出口量跃居全球第二;统一充电接口或让苹果每年损失百亿;《财富》杂志公布“改变世界的公司”榜单...
- win10用户名与计算机名字一样,win10电脑账户名和其他信息怎么更改
- 热敏电阻(NTC)的基本参数及其应用(图)
- ContextCapture APP 不需电脑用手机就能实景三维建模
- buctoj2021年ACM竞赛班训练(四)全题解
- 【深度解读】电动自行车新国标对锂电池行业的影响分析
- html左右箭头实现图片滚动,jquery控制左右箭头滚动图片列表的实例