Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Verbinden von Navigations-Meshes

Verschiedene NavigationMeshes werden vom NavigationServer automatisch zusammengeführt, wenn sich mindestens zwei Vertex-Positionen einer Kante genau überschneiden.

Für Verbindungen über beliebige Entfernungen siehe Verwenden von NavigationLinks.

../../_images/navigation_vertex_merge.png

Das gleiche gilt für mehrere NavigationPolygon-Ressourcen. Solange sich ihre Umrisspunkte genau überschneiden, wird der NavigationServer sie zusammenführen. NavigationPolygon-Umrisse müssen aus verschiedenen NavigationPolygon-Ressourcen stammen, um verbunden werden zu können.

Überlappende oder sich schneidende Umrisse auf demselben NavigationPolygon führen zu einem Fehlschlag bei der Erstellung des Meshs. Überlappende oder sich überschneidende Umrisse von verschiedenen NavigationsPolygonen führen häufig dazu, dass die Randverbindungen der Navigationsregion auf dem NavigationServer nicht erstellt werden können, und sollten vermieden werden.

../../_images/navigation_vertex_merge2.png

Warnung

Exakt bedeutet exakt für die Zusammenführung der Vertexpositionen. Kleine Float-Fehler, die bei importierten Meshes regelmäßig auftreten, verhindern ein erfolgreiches Zusammenführen von Vertices.

Alternativ werden Meshes nicht zusammengeführt, sondern vom NavigationServer als verbunden betrachtet, wenn ihre Kanten nahezu parallel und in einem gewissen Abstand zueinander verlaufen. Der Verbindungsabstand wird durch den edge_connection_margin für jede Navigations-Map definiert. In vielen Fällen können die Kanten des Navigations-Mesh nicht richtig verbunden werden, wenn sie sich teilweise überlappen. Um ein konsistentes Zusammenführungsverhalten zu erreichen, sollte eine Überlappung der Mesh-Kanten immer vermieden werden.

../../_images/navigation_edge_connection.png

Wenn Navigations-Debugging aktiviert und der NavigationServer aktiv ist, werden die hergestellten Mesh-Verbindungen visualisiert. Siehe Debug-Tools für Navigation für weitere Informationen über Navigations-Debug-Optionen.

Die Default-2D-edge_connection_margin kann in den Projekteinstellungen unter navigation/2d/default_edge_connection_margin geändert werden.

Die Default-3D-edge_connection_margin kann in den Projekteinstellungen unter navigation/3d/default_edge_connection_margin geändert werden.

Der Abstandswert der Kantenverbindung einer beliebigen Navigationskarte kann auch zur Laufzeit mit der NavigationServer API geändert werden.

extends Node2D
# 2D margins are designed to work with "pixel" values
var default_2d_map_rid: RID = get_world_2d().get_navigation_map()
NavigationServer2D.map_set_edge_connection_margin(default_2d_map_rid, 50.0)
extends Node3D
# 3D margins are designed to work with 3D unit values
var default_3d_map_rid: RID = get_world_3d().get_navigation_map()
NavigationServer3D.map_set_edge_connection_margin(default_3d_map_rid, 0.5)

Bemerkung

Eine Änderung des Abstands einer Kantenverbindung löst eine vollständige Aktualisierung aller Mesh-Verbindungen auf dem Navigationsserver aus.