Unity 动态 NavMesh 导航AI

如果对基础NavMesh不了解的同学,这一篇文章基础讲的很详细,虽然有点早,不过放到现在也很实用

http://liweizhaolili.blog.163.com/blog/static/16230744201271161310135/

 

实现动态NavMesh有两种方法,一种使用unity自带的 NavMeshObstacle,正是下面我要讲的,还有一种是Unity5.6之后官方出的一种更高级的动态寻路,https://blog.csdn.net/l773575310/article/details/77650494,这个博客有介绍,不过性能消耗太大,我们公司的项目是手游,我是写AI的,之前使用过新版的,卡顿厉害,所以我选择了NavMeshObstacle

如果我们想要AI寻路,原来地方有障碍物,当障碍物消失或者移动位置的时候,原来的位置变为可移动,障碍物处的位置变为不可移动,就可以使用NavMeshObstacle这种方法

关键脚本:

Shape:障碍物形状,目前只有Box和Capsule,不过对于一般的障碍物来说足够了,但是上面提到5.6之后版本的寻路不存在这种局限,它是以各个物体的mesh来固定时间重新刷新NavMesh的网格,所以比较消耗性能

Center ... Size...

Carve:最为关键的地方,应用官方说法 Should this obstacle make a cut-out in the navmesh  ,是否应该从navmesh中删掉,不难理解,作为障碍物一定要勾选上

Move Threshold:Threshold distance for updating a moving carved hole (when carving is enabled). 当移动超过这个距离就重新刻画Obstacle

Time To Stationary:刻画的时间间隔

Carve Only Stationary:Should this obstacle be carved when it is constantly moving? 一般也是勾选上的

 

只需要正常烘焙可移动区域,障碍物挂上NavMeshObstacle,放入可行走区域即可,其他一切按照普通静态nav来搞就好

下面是演示实例:在怪物移动的途中我新创建了一个障碍物,怪物会自动躲避新建的障碍物,当障碍物被销毁时,可以从原来的位置过去

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值