Obstacle
障碍物,在NavMesh系统中我们是不能用Collider来做一个障碍物,因为角色在导航网格中的运动是根据导航点来进行移动的,所以我们要用Mesh Obstacle这个组件来制作障碍物
Paste_Image.png- shape表示此障碍物的形状
- center size这两个属性大家一看应该都知道是什么意思;
- Carve 这个属性不好解释,我的理解就是是否把障碍物计算到导航网格中,下边我举例子说明
- 没有勾选的情况下
![Paste_Image.png](http://upload-
Paste_Image.png
第二张图是我的烘焙的导航网格,在浅蓝色的区域都是可以走动的,第一张图的那个白色的Cube是我设置的目标点,按照常理来说,假如物体在被障碍物阻挡以后,他会计算出一条新的路线去到达目标点,(比如从桥下边)但是角色并没有这样做,而是一直卡在障碍物前边。这是因为导航网格中,没有这个障碍物的信息,所以角色的自动寻路系统会一直以为这个路线是最短的路线,但是这个障碍物因为有obscale这个组件所以会阻挡角色向前移动。所以就出现了第一张图的现象。
-
勾选上以后
此时我们会发现该障碍物四周出现了和场景中其他物体一样的不能到达的灰色区域。我们在来看下效果
若水GIF截图_2016年12月18日21点45分30秒.gif
而此时我们也会发现在obstacle组件中也多了几个选项
- Move Threshould 当障碍物移动多少距离时,重新雕刻导航网格
- Time To Stationary 该障碍物静止以后隔多少秒才会雕刻导航网格
- Carve Only Station 勾选上时只有当物体静止下来以后才会去雕刻导航网格。
分层寻路
-
第一点
Paste_Image.png
这个就是导航系统里边所有的区域,默认的有Walkable,Not Walkable ,Jump三个区域,而下边的User 那些都是我们自己可以去设定的一些区域,我们就是通过这个来实现分层寻路。在这个列表里有一列为Cost,这个意思就是通过这些区域所需要的代价,比如在平底移动和在水里移动所需要的代价是不一样的,那我们就可以通过后边的Cost来进行设定,而导航系统中最短路径就是移动到目标点所消耗的代价最小。
-
第二点
我们选中一个物体,然后把他的
Paste_Image.png
这个选项选择一下就可以,注意这个是在Object菜单下,选项的意思是,你要把该物体烘焙成导航网格里边的哪个区域。
- 第三点
这个是在角色自身到带的NavMeshAgent组件里AreaMask,角色都可以在导航网格中的哪些区域移动
通过这三点的调节,我们就可以来实现分层导航。
注意
当我们每次要对导航网格修改时,每次修改以后一定要点一下Bake这个按钮,然后他才会自动烘培
网友评论