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.

Utilizzo di NavigationMap

../../_images/nav_maps.png

Una NavigationMap è un mondo di navigazione astratto sul NavigationServer identificato da un RID del NavigationServer.

Una mappa può contenere e collegare un numero pressoché infinito di regioni di navigazione con mesh di navigazione per costruire le aree percorribili di un mondo di gioco, al fine di ricerche del percorso.

Una mappa può contenere agenti di evitamento. L'evitamento delle collisioni sarà calcolato in base agli agenti presenti nella mappa.

Nota

Le diverse mappe di navigazione sono completamente isolate l'una dall'altra, ma le regioni di navigazione e gli agenti di evitamento possono passare da una mappa all'altra. I passaggi diventeranno effettivi quando il NavigationServer si sincronizza.

Mappe di navigazione predefinite

Normalmente, Godot crea una mappa di navigazione per ogni World2D e World3D della viewport radice.

È possibile ottenere il RID della mappa di navigazione predefinita 2D con get_world_2d().get_navigation_map() da qualsiasi nodo che eredita da Node2D.

È possibile ottenere il RID della mappa di navigazione predefinita 3D con get_world_3d().get_navigation_map() da qualsiasi nodo che eredita da Node3D.

extends Node2D

func _ready() -> void:
    var default_navigation_map_rid: RID = get_world_2d().get_navigation_map()

Creare nuove mappe di navigazione

Il NavigationServer può creare e supportare tutte le mappe di navigazione necessarie per specifiche dinamiche di gioco. Ulteriori mappe di navigazione si creano e gestiscono direttamente tramite l'API del NavigationServer, ad esempio per supportare diversi agenti di evitamento o tipi di locomozione per gli attori.

Per usi di esempio di diverse mappe di navigazione, consulta Supportare diversi tipi di attori e Supportare la locomozione di diversi attori.

Ogni mappa di navigazione sincronizza individualmente le modifiche in coda alle proprie regioni di navigazione e ai propri agenti di evitamento. Una mappa di navigazione che non ha ricevuto modifiche consumerà poco o nessun tempo di elaborazione. Le regioni di navigazione e gli agenti di evitamento possono appartenere a una sola mappa di navigazione, ma possono cambiare mappa in qualsiasi momento.

Nota

Il cambio di mappa di navigazione avrà effetto solo dopo la successiva sincronizzazione del NavigationServer.

extends Node2D

func _ready() -> void:
    var new_navigation_map: RID = NavigationServer2D.map_create()
    NavigationServer2D.map_set_active(new_navigation_map, true)

Nota

Non c'è alcuna differenza tra le mappe di navigazione create con l'API del NavigationServer2D o con l'API del NavigationServer3D.