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】分离路面导航的更多相关文章

  1. GJM : Unity3D HIAR 目录导航

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  2. 夺命雷公狗---Thinkphp----13之前台的头尾分离和导航分离

    我们在实际的开发中往往网站的头尾都是分离开来的,而且tp这点做的也很人性化,他给我们留了一个include标签可以直接引入网站的头尾部分. 我们要做的网站当然也不例外,头尾一样分离开来: 我们先用浏览 ...

  3. 《React后台管理系统实战 :二》antd左导航:cmd批量创建子/目录、用antd进行页面布局、分离左导航为单独组件、子路由、动态写左导航、css样式相对陷阱

    一.admin页面布局及路由创建 0)cmd批量创建目录及子目录 //创建各个目录,及charts和子目录bar md home category product role user charts\b ...

  4. Android ActionBar详解

    Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar   目录(?)[+]   第4 ...

  5. 前端工程化(二)---webpack配置

    导航 前端工程化(一)---工程基础目录搭建 前端工程化(二)---webpack配置 前端工程化(三)---Vue的开发模式 前端工程化(四)---helloWord 继续上一遍的配置,本节主要记录 ...

  6. 前端工程化(三)---Vue的开发模式

    从0开始,构建前后端分离应用 导航 前端工程化(一)---工程基础目录搭建 前端工程化(二)---webpack配置 前端工程化(三)---Vue的开发模式 前端工程化(四)---helloWord ...

  7. 第三部分:Android 应用程序接口指南---第二节:UI---第四章 Action Bar

    第4章 Action Bar Action Bar是一个能用于确定应用程序和用户的位置,并提供给用户操作和导航模式的窗口功能.如果需要显著地展示当前用户的操作或导航,应该使用Action Bar,因为 ...

  8. Unity3D寻路导航烘焙

    在初次进行3D(三维)游戏体验中,避免不了对游戏有生疏的情况,因此在游戏中一般会插入新手指导.自动寻路.导航地图等AI人工智能技术到游戏中,方便玩家更快体验,为了玩家的体验更好,Unity3D寻路导航 ...

  9. Unity3D 导航网格自动寻路(Navigation Mesh)

    NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一种技术,将游戏中复杂的结构组织关系简化为带有一定信息的网格,在这些网格的基础上通过一系列的计算来实现自动寻路..导航时,只需要给导 ...

  10. [原]Unity3D深入浅出 - 导航网格自动寻路(Navigation Mesh)

    NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一种技术,将游戏中复杂的结构组织关系简化为带有一定信息的网格,在这些网格的基础上通过一系列的计算来实现自动寻路..导航时,只需要给导 ...

随机推荐

  1. [IDEA] - tomcat VM配置

    -Dfile.encoding=UTF-8

  2. Go-获取密码的sha值

    // 对用户密码进行加密 func EncodePwd(pwd string) string { s := sha256.New() s.Write([]byte(pwd)) data := s.Su ...

  3. [转帖]TiDB 使用 dumpling 导出数据,并使用 lightning 导入到另一个 TiDB 库

    本文介绍从 TiDB-A 库导出数据到 TiDB-B 库: 导出 Dumpling 包含在 tidb-toolkit 安装包中,可在此下载. 从 TiDB/MySQL 导出数据 需要的权限 SELEC ...

  4. Clickhouse 极简单机版本安装部署

    Clickhouse 极简单机版本安装部署 摘要 Clickhouse的安装与部署其实比较简单. 但是为了能够更加简单的部署与使用. 尤其是能够可以方便的添加到镜像内进行运行. 所以记录一下方便快捷的 ...

  5. HotSpare 9361Raid卡热备盘的设置过程

    HotSpare 9361Raid卡热备盘的设置过程 摘要 公司最近一批服务器到位(去年生产) 插满24盘位的 960G 的SSD 的超融合服务器. (硬盘是镁光的 !-_-!) 想着Raid6虽然数 ...

  6. vCenter 宕机后证书续期处理

    vCenter 宕机后证书续期处理 背景 最近护网, 我司被选中作为防守方 因为发现一个vCenter控制台出现异常访问, 被管理员强行断网. 因为是周六的事情,当时自己也没太在意,想着工作日添加网络 ...

  7. 【转帖】JVM 元数据区的内存泄漏之谜

    https://www.infoq.cn/article/Z111FLot92PD1ZP3sbrS 一.问题描述 某天,SRE 部门观察到一个非常重要的应用里面有一台服务器的业务处理时间(Transa ...

  8. [转帖]一次python服务的性能优化经历

    https://juejin.cn/post/7208708762265616421 问题背景: ​ 在我们的业务中,有一些推荐的场景会需要走到集团研究院的算法推荐服务,对一些用户进行个性化的课件推荐 ...

  9. [转帖] Linux命令拾遗-剖析工具

    https://www.cnblogs.com/codelogs/p/16060472.html 简介# 这是Linux命令拾遗系列的第五篇,本篇主要介绍Linux中常用的线程与内存剖析工具,以及更高 ...

  10. Widows 关闭 Defender的方法

    Study From MS reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /v ...