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.
Checking the stable version of the documentation...
Verwendung von NavigationRegions
NavigationRegions sind die visuelle Node-Repräsentation einer Region der Navigations-Map auf dem NavigationServer. Jeder NavigationRegion-Node enthält eine Ressource für die Daten des Navigation Mesh.
Sowohl die 2D- als auch die 3D-Version sind als NavigationRegion2D bzw. NavigationRegion3D verfügbar.
Die einzelnen NavigationRegions laden ihre 2D-Navigationspolygon- oder 3D-Navigations-Mesh-Ressourcendaten auf den Navigationsserver hoch. Die NavigationServer-Map verwandelt diese Informationen in eine kombinierte Navigations-Map für die Wegfindung.
Um eine Navigationsregion über den Szenenbaum zu erstellen, fügen Sie einen NavigationRegion2D oder NavigationRegion3D-Node zur Szene hinzu. Alle Regionen benötigen ein Navigation-Mesh, um zu funktionieren. Siehe Verwenden von Navigations-Meshes um zu lernen, wie man Navigations-Meshes erstellt und anwendet.
NavigationRegions werden automatisch global_transform-Änderungen an die Region auf dem NavigationServer weitergeben, was sie für bewegte Plattformen geeignet macht. Der NavigationServer wird versuchen, die Meshes der einzelnen Regionen zu verbinden, wenn sie nahe genug beieinander liegen. Für weitere Details siehe Verbinden von Navigations-Meshes. Um Navigationsregionen über beliebige Entfernungen zu verbinden, siehe Verwenden von NavigationLinks, um zu lernen, wie man NavigationLinks erzeugt und benutzt.
Warnung
Wenn die Transformation eines NavigationRegion-Nodes geändert wird, wird zwar die Position der Region auf dem NavigationServer aktualisiert, nicht aber die Skalierung. Eine Navigation-Mesh-Ressource hat keine Skalierung und muss vollständig aktualisiert werden, wenn die Quellgeometrie die Skalierung ändert.
Regionen können aktiviert/deaktiviert werden, und wenn sie deaktiviert sind, tragen sie nicht zu zukünftigen Pfadfindungsanfragen bei.
Bemerkung
Bestehende Pfade werden nicht automatisch aktualisiert, wenn eine Region aktiviert/deaktiviert wird.
Neue Navigationsregionen erstellen
Neue NavigationRegion-Nodes werden automatisch in der Default-Weltnavigations-Map für ihre 2D/3D-Dimension registriert.
Die Regions-RID kann dann von NavigationRegion Nodes mit get_rid() erhalten werden.
extends NavigationRegion2D
var navigationserver_region_rid: RID = get_rid()
public partial class MyNavigationRegion2D : NavigationRegion2D
{
public override void _Ready()
{
Rid navigationServerRegionRid = GetRid();
}
}
extends NavigationRegion3D
var navigationserver_region_rid: RID = get_rid()
public partial class MyNavigationRegion3D : NavigationRegion3D
{
public override void _Ready()
{
Rid navigationServerRegionRid = GetRid();
}
}
Neue Regionen können auch mit der NavigationServer-API erstellt und zu jeder bestehenden Map hinzugefügt werden.
Wenn Regionen direkt mit der NavigationServer-API erstellt werden, muss ihnen manuell eine Navigations-Map zugewiesen werden.
extends Node2D
func _ready() -> void:
var new_region_rid: RID = NavigationServer2D.region_create()
var default_map_rid: RID = get_world_2d().get_navigation_map()
NavigationServer2D.region_set_map(new_region_rid, default_map_rid)
public partial class MyNode2D : Node2D
{
public override void _Ready()
{
Rid newRegionRid = NavigationServer2D.RegionCreate();
Rid defaultMapRid = GetWorld2D().NavigationMap;
NavigationServer2D.RegionSetMap(newRegionRid, defaultMapRid);
}
}
extends Node3D
func _ready() -> void:
var new_region_rid: RID = NavigationServer3D.region_create()
var default_map_rid: RID = get_world_3d().get_navigation_map()
NavigationServer3D.region_set_map(new_region_rid, default_map_rid)
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
Rid newRegionRid = NavigationServer3D.RegionCreate();
Rid defaultMapRid = GetWorld3D().NavigationMap;
NavigationServer3D.RegionSetMap(newRegionRid, defaultMapRid);
}
}
Bemerkung
Navigations-Regionen können nur einer einzigen Navigation Map zugewiesen werden. Wenn eine bestehende Region einer neuen Map zugewiesen wird, verlässt sie die alte Map.