連接導覽網格

當一條邊的至少兩個頂點位置完全重疊時,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 上所有導覽網格連接的完整重新更新。