博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Unity】12.5 Navmesh Obstacle组件
阅读量:6179 次
发布时间:2019-06-21

本文共 1471 字,大约阅读时间需要 4 分钟。

开发环境: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
().enabled = false; yield return new WaitForSeconds(2.0f); GetComponent
().enabled = false; GetComponent
().enabled = true; } void Update() { }}

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

5、将脚本添加到bridge

将脚本拖放到bridge对象上。

6、预览效果

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

转载于:https://www.cnblogs.com/rainmj/p/5472494.html

你可能感兴趣的文章
一个透明位图类的例子
查看>>
使用API判断网络是否连通(InternetGetConnectedState / IsNetworkAlive)
查看>>
Directx+CEGUI把界面集成到游戏中,支持全屏方式(c++)
查看>>
leetcode Jump Game I II 待续 贪心看不懂啊!!!!
查看>>
maven 国内镜像
查看>>
洛谷P2169 正则表达式
查看>>
CodeForces - 1118 F2 Tree Cutting
查看>>
支持metro style app 的框架已经出来了
查看>>
windows 10 自适应布局
查看>>
mybatis insertUseGeneratedKeys
查看>>
Python的安装和详细配置(转)
查看>>
java实现电脑远程控制完整源代码(转)
查看>>
RepositoryClassLoader.java
查看>>
[python]什么是生成器
查看>>
解决Autofac MVC 自动注入在 Areas拆分到不同dll下的注入失败问题
查看>>
[angularjs] angularjs系列笔记(六)http
查看>>
[Go] golang的用途和windows搭建环境
查看>>
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
查看>>
java基础编程一
查看>>
select获取选中的option(包含value和text,重点是text怎么获取)
查看>>