NavMesh障碍物组件
- 在我们游戏中通常在寻路时会遇见一些障碍物(动态,静态障碍物),对于这些障碍物的控制我们使用NavMesh Obstacle组件。
静态障碍物
- 在Scene中添加一个Cube,并将它烘焙成障碍物。
这时物体无法穿过障碍物。
如果我们想得到一个动态的障碍物,不进行Navigation的烘焙,及时带有碰撞体,物体在导航中运动时也会穿越物体。(在NavMesh中用碰撞体当障碍物毫无作用)
动态障碍物
- 需要得到动态障碍物,需要添加NavMeshObstacle组件。
- 添加NavMeshObstacle组件后物体无法穿过障碍物。
NavMeshObstacle组件参数。
Shape:障碍物类型,盒型和胶囊体。
- 可以通过调节Center和Size来调节线框。(类似Collider)
最重要的参数Carve(直接翻译雕刻,相当的消耗性能)
不勾选的情况。该障碍物只是阻挡了物体前进路线,并没有改变物体导航网格的路径(导航只会不断的计算最短路径依旧认为此条路径是最短的不会重新计算路径)。物体不会绕过该障碍物进行导航。
- 勾选以后,导航网格发生了改变,在障碍物表面雕刻出了一个和它表面积相似的网格区域。
- 此时物体会通过雕刻出的导航网格判断这条路是无法通过的,会重新进行最短路线的计算并移动。
- 在场景中移动障碍物,导航网格也会重新计算(动态障碍物)
*Carve参数
Move Threshold:该参数代表该障碍物的移动的极限距离超过这个参数时,才会重新雕刻这个障碍物。
增大此值,障碍物移动没有超过这个距离,就不会重新雕刻导航网格。
- Time To Startionary: 障碍物静止不动多少时间后会重新雕刻导航网格。(当障碍物移动的时间不会进行雕刻,下一个参数!)
- Carve Only Startionary: 勾选此参数时,只有在障碍物静止时会对它导航网格进行雕刻。