Up to date

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

Verwendung von NavigationMaps

../../_images/nav_maps.png

Eine NavigationMap ist eine abstrakte Navigationswelt auf dem NavigationServer, die durch eine NavigationServer-RID identifiziert wird.

Eine Map kann eine nahezu unendliche Anzahl von Navigationsregionen enthalten und mit Navigations-Meshes verbinden, um die durchquerbaren Bereiche einer Spielwelt für die Pfadfindung zu bilden.

Eine Map kann Ausweichagenten enthalten. Die Kollisionsvermeidung wird auf der Grundlage der in der Karte vorhandenen Agenten berechnet.

Bemerkung

Verschiedene NavigationMaps sind vollständig voneinander isoliert, aber Navigationsregionen und Ausweichagenten können zwischen verschiedenen Maps wechseln. Der Wechsel wird bei der Synchronisation des Navigationsservers wirksam.

Default-Navigations-Maps

Standardmäßig erstellt Godot eine Navigations-Map für jeden World2D und World3D des Root-Viewports.

Die 2D-Default-Navigations-Map-RID kann mit get_world_2d().get_navigation_map() von jedem von Node2D erbenden Node erhalten werden.

Die 3D-Default-Navigations-Map-RID kann mit get_world_3d().get_navigation_map() von jedem von Node3D erbenden Node erhalten werden.

extends Node2D

var default_2d_navigation_map_rid: RID = get_world_2d().get_navigation_map()
extends Node3D

var default_3d_navigation_map_rid: RID = get_world_3d().get_navigation_map()

Neue Navigations-Maps erstellen

Der NavigationServer kann so viele Navigations-Maps erstellen und unterstützen, wie für ein bestimmtes Gameplay erforderlich sind. Zusätzliche Navigations-Maps werden direkt über die NavigationServer-API erstellt und verwaltet, z.B. um verschiedene Ausweichagenten oder Fortbewegungsarten von Akteuren zu unterstützen.

Für Beispiele für die Verwendung verschiedener Navigations-Maps siehe Unterstützung verschiedener Akteurstypen und Unterstützung für verschiedene Akteur-Forbewegungsarten.

Jede Navigations-Map synchronisiert einzeln die in der Warteschlange stehenden Änderungen mit ihren Navigationsregionen und Ausweichagenten. Eine Navigationskarte, die keine Änderungen erhalten hat, verbraucht wenig bis gar keine Verarbeitungszeit. Navigationsregionen und Ausweichagenten können nur Teil einer einzigen Navigations-Map sein, aber sie können jederzeit die Map wechseln.

Bemerkung

Ein Wechsel der Navigations-Map wird erst nach der nächsten Synchronisation des NavigationServers wirksam.

extends Node2D

var new_navigation_map: RID = NavigationServer2D.map_create()
NavigationServer2D.map_set_active(true)
extends Node3D

var new_navigation_map: RID = NavigationServer3D.map_create()
NavigationServer3D.map_set_active(true)

Bemerkung

Es gibt keinen Unterschied zwischen Navigations-Maps, die mit der NavigationServer2D-API oder der NavigationServer3D-API erstellt wurden.