Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

連接導覽網格

當一條邊的至少兩個頂點位置完全重疊時,NavigationServer 會自動合併不同的導覽網格。

若要連接任意距離,請參閱 使用 NavigationLink

../../_images/navigation_vertex_merge.png

多個 NavigationPolygon 資源的情況也相同。只要它們的輪廓點完全重疊,NavigationServer 就會自動合併它們。要連接,NavigationPolygon 的輪廓必須來自不同的 NavigationPolygon 資源。

同一個 NavigationPolygon 上重疊或相交的輪廓會導致導覽網格建立失敗。不同 NavigationPolygon 之間重疊或相交的輪廓,通常也無法在 NavigationServer 上建立區域邊緣連接,因此應避免這種情況。

../../_images/navigation_vertex_merge2.png

警告

頂點位置合併必須完全精確。匯入網格常見的小數點誤差都會導致頂點無法正確合併。

另外,若兩個導覽網格的邊緣幾乎平行且彼此接近,即使沒有合併,NavigationServer 也會將它們視為**已連接**。這個連接距離由每個導覽地圖的 edge_connection_margin 屬性決定。多數情況下,導覽網格邊緣如果部分重疊會導致無法正確連接。為了確保行為一致,建議始終避免導覽網格重疊。

../../_images/navigation_edge_connection.png

啟用導覽除錯並且 NavigationServer 處於啟用狀態時,已建立的導覽網格連接會被視覺化顯示。有關導覽除錯選項的詳細資訊,請參閱 導航除錯工具

預設的 2D edge_connection_margin 可以在 ProjectSettings 的 navigation/2d/default_edge_connection_margin 進行設定。

預設的 3D edge_connection_margin 可以在 ProjectSettings 的 navigation/3d/default_edge_connection_margin 進行設定。

任何導覽地圖的邊緣連接邊距值,也可在執行時透過 NavigationServer API 動態調整。

extends Node2D

func _ready() -> void:
    # 2D margins are designed to work with 2D "pixel" values.
    var default_map_rid: RID = get_world_2d().get_navigation_map()
    NavigationServer2D.map_set_edge_connection_margin(default_map_rid, 50.0)

備註

更改邊緣連接邊距會觸發 NavigationServer 上所有導覽網格連接的完整重新更新。