這個組件放在場景中的導航網格上,可以阻擋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。