【Unity】12.5 Navmesh Obstacle组件
开发环境: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组件相关推荐
- Unity功能点---NavMesh的爬墙(OffMeshLink)和路障(NavMesh Obstacle)
记录一下自己的理解 好久没有使用NavMesh寻路系统了,回忆记录一下,主要是爬墙功能和路障功能: 爬墙功能需要在墙体添加OffMeshLing组件,然后设置爬墙的起始点,在墙上的运动点,从墙上下来的 ...
- 在Unity中使用NavMesh导航
In this tutorial we will learn about Navmesh in Unity, how to create it and use it on your game as p ...
- Unity制作GIF动画播放组件
Unity制作GIF动画播放组件(无需System.Drawing) 效果图 封装后的组件效果 使用方法 Is Play On Start:自动播放 Path: GIF路径 Is Use Fixed ...
- Unity 编辑器插件-快速删除组件
尊重原著:(1条消息) Unity 编辑器插件-快速删除组件_unity 删除组件_菜菜ANY的博客-CSDN博客 实现删除所选物体及子物体中指定组件.自动apply 同时考虑一个物体上挂在多个相同组 ...
- Unity 之 UGUI Layout自动布局组件详解
Unity 之 UGUI Layout自动布局组件详解 1,布局元素 (Layout Element) 2,水平布局组 (Horizontal Layout Group) 3,垂直布局组 (Verti ...
- 查看屏幕大小_疑似“iPhone 12” 的OLED屏幕组件泄露
来自可靠的泄密者的新照片显示了即将面世的" iPhone 12"所搭载的OLED屏幕.这名泄密者以前曾显示过未来苹果产品的准确图像,此前曾展示过苹果A14芯片组的早期图片,并声称& ...
- system volume information是什么文件_如何扩展Unity URP的后处理Volume组件
Unity在更新到Unity2019.4之后,大家或许已经发现,在使用URP(通用渲染管线)的情况下,Unity原来的Post Processing插件好像不起效了.原来Unity在Unity2019 ...
- 升级浏览器_升级Unity 8,优化系统组件,添加键盘手势,升级浏览器,UbuntuTouch最大的一次更新
Ubuntu Touch OTA-12正式发布了,官方声称这是Ubuntu Touch有史以来最大的一次发布,加入了许多新功能,可以在许多支持的Ubuntu Touch设备上使用. Ubuntu To ...
- Unity中的UI相关组件
一:Canvas:渲染UI --Overlay:覆盖模式 类似于手机贴膜,所有UI都会显示在场景中2D,3D物体的上层 在同一个Canvas下可以调整Canvas子物体的先后顺序,层级面板中越靠上则先 ...
最新文章
- Bzoj3168 [Heoi2013]钙铁锌硒维生素
- IntelliJ Idea注释模板--类注释、方法注释
- vim粘贴板和系统粘贴板的共享(linux)
- 小区居民投诉要拆除通信基站 三大运营商联手“封杀”...
- 浅析变长数组(VLA)和动态数组
- 未来十年计算机语言,随便聊聊中国未来十年热门的十大编程语言使用趋势
- 为ramda添加类型
- 『 文件操作 』HTML文件转MD文件
- 转载:ITRS/GCRS/J2000坐标系的相互转换
- STM32F412 串口接收不到数据的问题
- 头脑极度开放:前额皮层大战杏仁核
- php网页显示左中,php的动态页面在ie内核的浏览器面整体偏左的解决方法静
- 搭建网站服务器必须开443端口,记录解决网站443端口不通的问题(启动HTTP或者更换域名)...
- kaggle员工离职预测案例(1)
- liferay6.2 使用默认方式实现可配置的portlet
- 永中科技的救命恩人是谁?
- TortoiseSVN-1.6.5.16974(开源文件版本管理软件) 安装图解教程及下载文件
- B2B2C电商系统的价值是什么?
- 项目启动找不到资源文件可能的解决办法
- 单片机音频节奏灯_单片机在音乐节奏识别灯效系统中的智能控制
热门文章
- 在物理学的语言里,“生命”是什么?
- 重磅!首次发现人类大脑海马体在短时间尺度上对时间信息敏感
- 工业4.0进行时:工业机器人为何能够快速爆发?
- 华为秘密作战计划曝光,重注研发AI芯片挑战英伟达,轮值董事长挂帅
- 不用地图如何导航?DeepMind提出新型双路径强化学习「智能体」架构
- 《人工智能标准化白皮书(2018版)》发布|附下载
- 斯坦福大学「黑盒学习」研究:使用神经变分推理的无向图模型,可替代「采样」 | 附NIPS 2017论文
- 厉害!从电影花瓶到 Wi-Fi 之母,这才是乘风破浪的姐姐!
- 自制操作系统Antz day08——实现内核 (中) 扩展内核
- Burpsuite学习(4)