1 NavMeshObstacle组件

导航系统、分离路面导航中路障都是静态的,程序运行过程中烘焙的导航网格一直不变,本文将进一步讲解动态路障场景下导航的实现。

对于动态路障游戏对象,除了要设置 Navigation Static,还需要添加 NavMeshObstacle 组件,用于标记该对象在游戏运行过程中可以动态移动,以便 Unity3D 对此对象附近的导航网格进行动态烘焙。

  • Carve:是否开启动态烘焙导航网格(当路障移动后,是否重新烘焙该路障附近的导航网格);
  • Move Threshold:当路障移动的距离超过此阈值时,才会触发重新烘焙该路障附近的导航网格;
  • Time To Stationary:路障静止多长时间后才会触发重新烘焙导航网格;
  • Carve Only Stationary:路障只有在静止状态下才会重新烘焙导航网格。

2 动态路障导航案例

1)游戏界面

胶囊体是导航对象,球体是导航目标,红色长方体是动态路障,可以动态移动。

        2)设置 Navigation Static

依次选择【Window→Navigation】打开导航窗口,再选择 Object 选项卡,选中地面、台阶、楼梯、路障,勾选 Navigation Static,如下:

3)烘焙导航网格

切换到 Bake 选项卡,设置 Max Slope、Step Height 属性分别为:45、1.1,如下:

点击 Bake 烘焙导航网格,导航网格显示如下:

4)添加 NavMeshAgent 组件

给胶囊体添加 NavMeshAgent 组件。

5)添加 NavMeshObstacle 组件

红色路障可以移动,给其添加 NavMeshObstacle 组件,并勾选 Carve 选项。

6)添加脚本组件

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);}
}

说明:NavigationController 脚本组件挂在胶囊体上。

ObstacleController.cs

using UnityEngine;public class ObstacleController : MonoBehaviour {private float speedRate = 4f;private void Update () {float hor = Input.GetAxis("Horizontal");float ver = Input.GetAxis("Vertical");Vector3 speed = new Vector3(hor, 0, ver) * speedRate;transform.position += speed * Time.deltaTime;}
}

说明:ObstacleController 脚本组件挂在红色路障上。

7)运行效果

刚开始胶囊体寻找最优导航路径,准备走斜坡到达球体位置;中途移动红色路障卡住楼梯入口,胶囊体重新规划导航路线,准备走楼梯;等胶囊体往前走一点后,再放开斜坡入口,胶囊体发现原路线短些,准备回来走斜坡;再卡住斜坡入口,胶囊体又重新规划路线走楼梯;等胶囊体走远后,再打开斜坡入口,此时胶囊体已经觉得斜坡路线不香了,坚定地走楼梯路线。

【Unity3D】动态路障导航相关推荐

  1. EntityFramework4.5使用Expression类创建动态查询及动态查询导航属性

    创建动态查询 想在项目中实现一个灵活的动态查询类,参考http://www.cnblogs.com/lyj/archive/2008/03/25/1122157.html和http://www.cnb ...

  2. 通过url判断当前页,动态给导航加样式

    //通过url判断当前页,动态给导航加样式 var str =location.pathname; var index = str.lastIndexOf("\/"); str = ...

  3. 导航背景变换 php,jQuery实现的背景动态变化导航菜单效果

    本文实例讲述了jQuery实现的背景动态变化导航菜单效果.分享给大家供大家参考.具体如下: 这里介绍一款使用jQuery插件制作完成的导航菜单,一大特点是,菜单的背景有动态效果,与使用的背景图片完全变 ...

  4. Unity3d 动态字体

    https://www.xuebuyuan.com/2147872.html Unity3d 动态字体 2014年09月05日 ⁄ 综合 ⁄ 共 2101字 ⁄ 字号 小 中 大 ⁄ 评论关闭 目前测 ...

  5. uniapp 动态修改导航栏 之前使用this.$mp.page page提示未定义

    uniapp 动态修改导航栏 // 使用条件编译 防止H5报错// #ifdef APP-PLUSlet pages = getCurrentPages();let page = pages[page ...

  6. Unity3D动态修改RectTransform

    Unity3D动态修改RectTransform 改变RectTransform的width,height GetComponent<RectTransform>().rect.width ...

  7. Unity3D动态创建地形网格(一)

    Unity3D动态创建地形网格(一) 这次简单的写一个动态创建地形网格的脚本给大家分享一下. 这次是第一部分,仅仅实现了通过高度图动态生成地形的部分.假如以后有心情和时间,再来慢慢的补充多通道刷地形材 ...

  8. vue项目中引入阿里 iconfont 图标 动态渲染导航菜单图标

    vue + element 后台项目,项目中都是用的 element-ui 的图标 但是导航菜单是通过后台数据渲染的,所以在阿里图标库找了图标给后台,再渲染 步骤一: 在图标库找到想要的图标,加入购物 ...

  9. uniapp动态设置导航栏和标题栏语言

    hbuilderx中uniapp动态设置导航栏和标题栏语言 一 .下载vue-i18n文件引入项目 hbuilder本身是带有能够运行nmp命令的终端,由于用不到全部文件,我采用的是在电脑cmd窗口下 ...

  10. bootstrap动态切换导航按钮的active属性就实现

    在网上找了半天怎么动态切换导航,偶然发现bootstrap实现方法,bootstrap框架真的很强大,直接用能省不少时间,菜鸟教程很不错,在上面找到点击打开链接 <!DOCTYPE html&g ...

最新文章

  1. 消息队列处理微信支付超时订单
  2. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 获取账户资产
  3. Netflix 的上线工具 Spinnaker
  4. python基础知识点整理-Python知识点整理(day1)
  5. 待处理,待学习(每日更新)
  6. python爬虫——论抓包的正确姿势和学好Javascript的重要性(1)
  7. [UE4]删除UI:Remove from Parent
  8. android程序 幻灯片,Android:ViewPager制作幻灯片
  9. SQL Server索引超出了数组界限解决方法
  10. 最坑爹的硬盘:希捷ST2000DM001
  11. 高分3号介绍及PIE使用
  12. CATIA二次开发—参数那点事
  13. Java调用阿里云短信通道服务
  14. 推荐 10 个实用但偏执的 Java 编程技巧
  15. java短信生成6位数的校验码
  16. BUUCTF RSA(二)
  17. Nginx配置浏览器缓存
  18. 简单图文解释冯诺依曼体系结构(通俗易懂版)
  19. 【工具】JS脚本|网页任意视频倍速播放(包括MOOC、本地视频、其他的视频)
  20. DBCO-PEG15-amine,DBCO-PEG15-NH2,二苯并环辛炔-十五聚乙二醇-氨基科研试剂供应

热门文章

  1. 基于PID算法的房间温度控制及Python程序
  2. 十八新娘八十郎,苍苍白发对红妆。鸳鸯被里成双夜,一树梨花压海棠。
  3. CentOS7 Docker 端口映射
  4. windows常用快捷命令大全总结
  5. 计算机的品牌和发展历程,世界著名电脑品牌苹果的发展历程
  6. 001 - TOTP 和 Google 身份验证器
  7. window7安装jdk报错this version of the jdk is already installed
  8. mysql怎么解析json字符串_mysql解析json字符串
  9. BZOJ1597土地购买 【斜率优化DP】
  10. HDU 1166 敌兵布阵 线段树 单点修改 区间查询