http://www.unity蛮牛.com/thread-33383-1-1.html.

许久未曾发帖了,最近忙于换工作的问题,经常处于纠结状态,so...
偶尔上蛮牛还能看到大家对我的支持,感觉还是蛮欣慰的,在此谢谢大家支持...
好了,闲话就不先多讲了,直接进入今天的主题吧.

使用过unity3d自带的寻路网格组件(Navigation)的朋友应该知道,用它来做AI的寻路还是非常的方便的,如:

[C#] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
public Transform _obj;
   private NavMeshAgent _nav;
   void Awake()
   {
       _nav = this.GetComponent<NavMeshAgent>();
   }
   void Update()
   {
       if (Input.GetMouseButtonDown(0))
       {
               _nav.SetDestination(_obj.position);
       }
    }

只需要简单几行代码,即可实现自动避让 并以最短距离来追寻所要寻找的目标(当然首先要在Navigation中Bake地形,由于本帖不是教如何使用Navigation,在此就不过多叙述,不太明白的童鞋,可以百度Navigation,网上有很多相关帖子).
可是,在我们在写AI时,有需求一堆(怪/兵)攻击(主角/怪),如果用Navigation做导航,
经常遇到被(怪/兵)挡住,不会绕过前面的(怪/兵).如:
<ignore_js_op> 
这是多么尴尬的局面啊,那又当如何解决呢?
后来在圣典中文发现了这样一个东西NavMeshObstacle
<ignore_js_op>

上面有一个关键字大家需要注意下“具有动态阻挡物”,
咦?居然可以动态作为一个阻挡物?那么我们是否可以在找到目标的时候,让前面先到的 怪或兵 变成一个阻挡物?
那么如果可以的话,后面跟上来的 怪或兵又是否会自动判断到前面有阻挡物是否就会自动避让 重新寻找新的位置?达到我们想要的效果呢?
那就试试吧
<ignore_js_op>

先加上一个NavMeshObstacle组件 
<ignore_js_op>

额...怎么好像跟圣典上的属性对不上,好像多了几个属性(我目前版本是4.5.5f1好像Unity4.3.4上的都是这种的) ,先不管 运行看看效果
<ignore_js_op> 
我去,这什么情况 ?一运行发现被我加了NavMeshObstacle的物体 怎么像抽风了一样?难道行不通?
还是跟多了那几个属性有关?先去官网看看
<ignore_js_op> 
地址:http://docs.unity3d.com/ScriptReference/30_search.html?q=NavMeshObstacle
大概意思是:
Radius:半径
Height:高度
Move Threshold:当模式为Carve时,此物体的移动距离超过这个阀值后,更新当前的导航网格(重新挖洞)。
Carve:是否打开在导航网格挖洞的模式
Carve模式的一些总结:
1.在Bake场景的时候,Navigation窗口的Bake页面有一个高度值,场景中的导航网格通常作为一个平面,当NavMeshObstacle 距离小于这个高度时,
才会在导航网格上挖洞,否则NavMeshObstacle 还是以普通模式存在的。
2.NavMeshObstacle 在刚创建的时候最好先关闭NavMeshObstacle 这个组件,但需要是再打开,在跟NavMeshAgent混用时,不能共用(同时激活状态),
只能选其一,不然有bug。
3.碰撞还是使用trigger
4.最好不要同时使用RigidBody,有bug,新版本可能改好了,参考链接。
5.在挖洞时,设备掉帧比较明显。善用Move Threshold。

原来是我跟NavMeshAgent共用的问题,我去...
那就简单修改下吧(后面会放源码,这里就先简单说下思路
1.给要寻路的对象加上NavMeshAgent和 NavMeshObstacle组件,NavMeshObstacle去掉勾选,处于不激活状态
2.代码逻辑判断,当对象到达目标位置时 就先设置NavMeshAgent不启用,NavMeshObstacle为启用,
这样后面跟上来的 怪或兵就会自动判断到前面有阻挡物 自动避让 重新寻找新的位置
3.当 重新选择目标时,逻辑代码编写NavMeshObstacle先不启用,然后设置NavMeshAgent启用,设置新的目的地就可以了
运行效果如下:
<ignore_js_op> 
结果还是不错的,这样就会自动找到最合适的位置 不会存在开始的推挤情况了
可能图太小 ,来个大的静态图
<ignore_js_op> 
好了 ,就先这样吧 ,大家可能觉得后面有些草率了,因为实在太困了 现在2014年11月27日00:00:22  忘谅解 !!!
如有不太明白的地方 可以给我留言  晚安咯
项目工程 我放百度了 地址:http://pan.baidu.com/s/1pJNWGVD

转载于:https://www.cnblogs.com/123ing/p/4125693.html

通过NavMeshObstacle解决NavMesh防卡相关推荐

  1. 微信的行程卡服务器异常,行程卡打不开服务器崩了解决方法 行程卡短信查询步教程...

    今天滚天游戏网小编为大家带来行程卡打不开服务器崩了解决方法 行程卡短信查询步教程,希望能帮助到大家. 部分地区的健康码程序也无法打开,比如山东电子健康码.信息提示,由于当前访问人数过多,小程序可能会出 ...

  2. 物盟解决安防监控的“理想与现实”

    物盟解决安防监控的"理想与现实" 解决安防监控的"理想与现实" 近年来随着"智慧城市"项目的不断推进和落实,安防监控作为城市治安管理的核心受 ...

  3. python多进程解决多路视频流卡帧、掉帧、延时等问题

    多进程解决多路视频流卡帧.掉帧.延时等问题 利用python代码实现不同厂家摄像头同时实时录制并存储 本代码参考: link,文章作者实现读取多个(海康\大华)网络摄像头的视频流 (使用opencv- ...

  4. 多用户用linux会很卡顿吗,新手学Linux系统,解决Linux系统卡顿的方法

    很多新手刚从事linux运维的同学,经常会问我使用linux很卡的时候该怎么办?今天小编就为大家带来解决Linux系统卡顿的方法,下面一起来看看吧. 1.检查磁盘运用状况 df -h 当发现磁盘运用率 ...

  5. 用R3写卡成PRL302,解决新电信卡PRL301只能1X不能上3G问题

    用R3写卡成PRL302,解决新电信卡PRL301只能1X不能上3G问题 参考文章: (1)用R3写卡成PRL302,解决新电信卡PRL301只能1X不能上3G问题 (2)https://www.cn ...

  6. 解决Android Studio卡在Gradle:Resolve dependecies ‘app:_debugCompile‘问题

    解决Android Studio卡在Gradle:Resolve dependecies 'app:_debugCompile'问题 参考文章: (1)解决Android Studio卡在Gradle ...

  7. 优化服务器卡顿,如何解决国外服务器卡顿问题

    国外服务器卡顿的解决方法: 1.出现system进程或者其他不明进程占用资源过大导致国外服务器卡顿,可使用杀毒软件进行查杀,并清理干净; 2.wdp.exe占用服务器端资源过大导致国外服务器卡顿,则需 ...

  8. 鸿蒙系统卡顿解决方法,鸿蒙比安卓性能提升60%,还解决了安卓卡顿的问题,谷歌压力山大...

    鸿蒙比安卓性能提升60%,还解决了安卓卡顿的问题,谷歌压力山大 手机是大家生活中的必备设备,并且大家对于手机的了解程度可以说是很深刻了,知道一部手机想要使用的时间久的关键就是处理器和内存.内存小的手机 ...

  9. Android 解决帧动画卡顿问题

    Android帧动画一次性加载会造成ui卡顿,所以就有了这份代码.通过handle队列和Bitmap复用,每次加载一张并显示,可以解决帧动画卡顿问题. 使用方法: int[] right_res_id ...

最新文章

  1. php函数find的用法,c语言find函数的用法详解
  2. JVM 常用参数一览表(转)
  3. shell实例第22讲:shell中分隔符IFS用法
  4. Java Web - 服务器中的过滤器和监听器
  5. oracle24550,ORA-24550 Signal Received Error From Client Based Application
  6. shopify二次开发教程_详细教程:如何将Shopify的Storefront API与React和Redux结合使用...
  7. linux下安装svn1.7
  8. 浏览器设置(除了页面百分比之外,还有“字体大小”)
  9. onlyoffice源码编译环境搭建破解
  10. RESTful API及其设计思想
  11. python英语单词 扇贝英语安卓下载_扇贝单词英语版手机版|扇贝单词英语版安卓版下载 v3.6.402 - 跑跑车安卓网...
  12. 证书查询系统源码,全开源可二开,自定义查询条件字段
  13. 图像单通道和4通道转3通道
  14. 2021年低压电工及低压电工证考试
  15. 计算机科班与培训开发编程的区别在哪里?
  16. 遇到空指针异常的时候我们应该怎么办
  17. IDEA jjsp 404_IDEA 卡住buid(编译)不动的解决办法_java
  18. python 矩阵求逆
  19. 根据当前ip地址获取地理位置
  20. 高分子材料S阻燃剂的分类及参考配方

热门文章

  1. C++中 * *的用法与区别----实操才能看明白
  2. 用TensorFlow做Kaggle“手写识别”达到98%准确率-详解
  3. 深度学习(八)caffe源码学习-未完待续
  4. docker export_Docker 几个相似命令的区别
  5. android 底部动画,Android实现360手机助手底部的动画菜单
  6. oracle数据库赋权_oracle数据库删除赋权
  7. H3C认证云计算高级工程师
  8. 用计算机绘画教学反思,《电脑绘画》教学反思2篇
  9. wangEditor-3.1.1 自己扩展的,增加代码块行号
  10. 【PyTorch v1.1.0文档研习】60分钟快速上手