开发环境:Win10、Unity5.3.4、C#、VS2015

创建日期:2016-05-09

一、简介

在大多数游戏情景中,可行进的区域往往不是完全不变的。比如被破坏的路、桥等将不再允许通过。那么,如何控制行进物体呢?有两种解决办法。

第一种解决办法是分层控制,然后动态更改可行进层,比如对于不同的桥,分别用不同的层来控制。但是这种处理有一个局限性,比如一个游戏场景中包含很多桥的情形,每个桥都有自己的通行或禁止状态,那么如果分层控制,那么就需要为每一个桥分一个层,这样—来层数肯定不够用,因为在Unity中最多只能分32层。其次,在行进物体很多的时候,频繁改动进行物体的可行进层也不是—件轻松的事情。

第二种解决办法是利用Navmesh Obstade组件处理类似动态路障的问题。只要将该组件挂载到动态路障上,行进物体将会在寻路时自动躲避这些路障。

二、示例

该例子主要介绍第二种办法的具体实现。即:利用Navmesh Obstade组件处理类似动态路障的问题。采用这种办法时,不需要手动改变行进物体的可行进层,只需要在桥体上挂载Navmesh Obstade组件,然后通过脚本改变Navmesh Obstade组件的enable的值即可。在桥对象可通行时,enable的值为false,桥面不可通行时enable的值为true。

1、创建场景

在ch1201_Navmesh_Sample工程中,新建一个名为Demo4的场景,在场景中分别添加下面的对象:

其中,Demo4Mask下的Cube都是静态的,player是行进对象,greenCube是目的地。

2、烘培

具体步骤和前面的节类似,烘培后的结果如下:

3、为bridge添加Nav Mesh Obstable组件

在层次视图中选中bridge,为其添加【Nav Mesh Obstable】组件:

添加后,可看到bridge会被一个绿色的网格包围。

4、编写脚本

添加一个名为Demo4BridgeControl.cs的脚本,将其改为下面的内容:

using UnityEngine;
using System.Collections;public class Demo4BridgeControl : MonoBehaviour
{void Start(){StartCoroutine(Init());}IEnumerator Init(){GetComponent<Renderer>().enabled = false;yield return new WaitForSeconds(2.0f);GetComponent<NavMeshObstacle>().enabled = false;GetComponent<Renderer>().enabled = true;}void Update() {  }
}

代码中用了yield return来代替计时,这种方式比直接用一个time变量控制计时方便,代码也显得更简洁。

5、将脚本添加到bridge

将脚本拖放到bridge对象上。

6、预览效果

按【播放】按钮预览游戏,就会发现行进的胶囊体会一直等待桥面出现后,才通过桥到达目的地。

【Unity】12.5 Navmesh Obstacle组件相关推荐

  1. Unity功能点---NavMesh的爬墙(OffMeshLink)和路障(NavMesh Obstacle)

    记录一下自己的理解 好久没有使用NavMesh寻路系统了,回忆记录一下,主要是爬墙功能和路障功能: 爬墙功能需要在墙体添加OffMeshLing组件,然后设置爬墙的起始点,在墙上的运动点,从墙上下来的 ...

  2. 在Unity中使用NavMesh导航

    In this tutorial we will learn about Navmesh in Unity, how to create it and use it on your game as p ...

  3. Unity制作GIF动画播放组件

    Unity制作GIF动画播放组件(无需System.Drawing) 效果图 封装后的组件效果 使用方法 Is Play On Start:自动播放 Path: GIF路径 Is Use Fixed ...

  4. Unity 编辑器插件-快速删除组件

    尊重原著:(1条消息) Unity 编辑器插件-快速删除组件_unity 删除组件_菜菜ANY的博客-CSDN博客 实现删除所选物体及子物体中指定组件.自动apply 同时考虑一个物体上挂在多个相同组 ...

  5. Unity 之 UGUI Layout自动布局组件详解

    Unity 之 UGUI Layout自动布局组件详解 1,布局元素 (Layout Element) 2,水平布局组 (Horizontal Layout Group) 3,垂直布局组 (Verti ...

  6. 查看屏幕大小_疑似“iPhone 12” 的OLED屏幕组件泄露

    来自可靠的泄密者的新照片显示了即将面世的" iPhone 12"所搭载的OLED屏幕.这名泄密者以前曾显示过未来苹果产品的准确图像,此前曾展示过苹果A14芯片组的早期图片,并声称& ...

  7. system volume information是什么文件_如何扩展Unity URP的后处理Volume组件

    Unity在更新到Unity2019.4之后,大家或许已经发现,在使用URP(通用渲染管线)的情况下,Unity原来的Post Processing插件好像不起效了.原来Unity在Unity2019 ...

  8. 升级浏览器_升级Unity 8,优化系统组件,添加键盘手势,升级浏览器,UbuntuTouch最大的一次更新

    Ubuntu Touch OTA-12正式发布了,官方声称这是Ubuntu Touch有史以来最大的一次发布,加入了许多新功能,可以在许多支持的Ubuntu Touch设备上使用. Ubuntu To ...

  9. Unity中的UI相关组件

    一:Canvas:渲染UI --Overlay:覆盖模式 类似于手机贴膜,所有UI都会显示在场景中2D,3D物体的上层 在同一个Canvas下可以调整Canvas子物体的先后顺序,层级面板中越靠上则先 ...

最新文章

  1. Bzoj3168 [Heoi2013]钙铁锌硒维生素
  2. IntelliJ Idea注释模板--类注释、方法注释
  3. vim粘贴板和系统粘贴板的共享(linux)
  4. 小区居民投诉要拆除通信基站 三大运营商联手“封杀”...
  5. 浅析变长数组(VLA)和动态数组
  6. 未来十年计算机语言,随便聊聊中国未来十年热门的十大编程语言使用趋势
  7. 为ramda添加类型
  8. 『 文件操作 』HTML文件转MD文件
  9. 转载:ITRS/GCRS/J2000坐标系的相互转换
  10. STM32F412 串口接收不到数据的问题
  11. 头脑极度开放:前额皮层大战杏仁核
  12. php网页显示左中,php的动态页面在ie内核的浏览器面整体偏左的解决方法静
  13. 搭建网站服务器必须开443端口,记录解决网站443端口不通的问题(启动HTTP或者更换域名)...
  14. kaggle员工离职预测案例(1)
  15. liferay6.2 使用默认方式实现可配置的portlet
  16. 永中科技的救命恩人是谁?
  17. TortoiseSVN-1.6.5.16974(开源文件版本管理软件) 安装图解教程及下载文件
  18. B2B2C电商系统的价值是什么?
  19. 项目启动找不到资源文件可能的解决办法
  20. 单片机音频节奏灯_单片机在音乐节奏识别灯效系统中的智能控制

热门文章

  1. 在物理学的语言里,“生命”是什么?
  2. 重磅!首次发现人类大脑海马体在短时间尺度上对时间信息敏感
  3. 工业4.0进行时:工业机器人为何能够快速爆发?
  4. 华为秘密作战计划曝光,重注研发AI芯片挑战英伟达,轮值董事长挂帅
  5. 不用地图如何导航?DeepMind提出新型双路径强化学习「智能体」架构
  6. 《人工智能标准化白皮书(2018版)》发布|附下载
  7. 斯坦福大学「黑盒学习」研究:使用神经变分推理的无向图模型,可替代「采样」 | 附NIPS 2017论文
  8. 厉害!从电影花瓶到 Wi-Fi 之母,这才是乘风破浪的姐姐!
  9. 自制操作系统Antz day08——实现内核 (中) 扩展内核
  10. Burpsuite学习(4)