首页 > 代码库 > Unity的 NavMeshObstacle 的使用详解

Unity的 NavMeshObstacle 的使用详解

        这个组件放在场景中的导航网格上,可以阻挡NavMeshAgent的移动。以Unity4.3.4为例。

        NavMeshObstacle 分为两种模式,一种是普通模式,通过设置半径和高度来确定一个范围,阻档NavMeshAgent移动,一种是Carve模式,在导航网格上,根据模型的大小,挖出一个“洞”,使模型范围内的导航网格消失,这样NavMeshAgent就不能经过次区域了。

        可以设置的属性如下:

Radius:半径

Height:高度

Move Threshold:当模式为Carve时,此物体的移动距离超过这个阀值后,更新当前的导航网格(从新挖洞)。

Carve:是否打开在导航网格挖洞的模式。

 

        Carve模式的一些总结:

  • 在Bake场景的时候,Navigation窗口的Bake页面有一个高度值,场景中的导航网格通常作为一个平面,当NavMeshObstacle 距离小于这个高度时,才会在导航网格上挖洞,否则NavMeshObstacle 还是以普通模式存在的。
  • NavMeshObstacle 在刚创建的时候最好先关闭NavMeshObstacle 这个组件,但需要是再打开,否则会有bug(先创建NavMeshObstacle,再Additive场景后,场景中一直存在一个不可通过区域)。创建完毕后,移动到适当位置再激活这个组件。
  • 碰撞还是使用trigger
  • 最好不要同时使用RigidBody,有bug,新版本可能改好了,参考链接。
  • 在挖洞时,设备掉帧比较明显。善用Move Threshold。

Unity的 NavMeshObstacle 的使用详解