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 NavigationRegion

Le NavigationRegion sono la rappresentazione visiva, di tipo nodo, di una regione della mappa di navigazione sul NavigationServer. Ogni nodo NavigationRegion contiene una risorsa per i dati della mesh di navigazione.

Sono disponibili versioni 2D e 3D, rispettivamente come NavigationRegion2D e NavigationRegion3D.

Le singole regioni di navigazione caricano i propri dati di risorsa NavigationPolygon 2D o NavigationMesh 3D sul NavigationServer. La mappa del NavigationServer trasforma queste informazioni in una mappa di navigazione combinata per la ricerca del percorso.

Per creare una regione di navigazione attraverso l'albero di scene, aggiungi un nodo NavigationRegion2D o NavigationRegion3D alla scena. Tutte le regioni richiedono una risorsa mesh di navigazione per funzionare. Consulta Utilizzo di mesh di navigazione per imparare a creare e applicare le mesh di navigazione.

Le NavigationRegion invieranno automaticamente le modifiche del global_transform alla regione sul NavigationServer, rendendole adatte alle piattaforme mobili. Il NavigationServer tenterà di connettere le mesh di navigazione delle singole regioni quando sono vicine abbastanza. Per maggiori dettagli, consulta Connettere i mesh di navigazione. Per connettere le NavigationRegion su distanze arbitrarie, consulta Utilizzo dei NavigationLink per imparare a creare e utilizzare i NavigationLink.

Avvertimento

Sebbene modificare la trasformazione di un nodo NavigationRegion aggiorni la posizione della regione sul NavigationServer, cambiare la scala non ha lo stesso effetto. Una risorsa mesh di navigazione non ha scala e deve essere completamente aggiornata quando la geometria sorgente cambia scala.

Le regioni si possono abilitare/disabilitare e, se disabilitate, non contribuiranno alle future query di ricerca del percorso.

Nota

I percorsi esistenti non verranno aggiornati automaticamente quando una regione viene abilitata o disabilitata.

Creare nuove regioni di navigazione

I nuovi nodi NavigationRegion si registreranno automaticamente alla mappa di navigazione predefinita del mondo per la loro dimensione 2D/3D.

L'RID della regione si potrà poi ottenere dai nodi NavigationRegion tramite la funzione get_rid().

extends NavigationRegion2D

var navigationserver_region_rid: RID = get_rid()

È inoltre possibile creare nuove regioni tramite l'API del NavigationServer e aggiungerle a qualsiasi mappa esistente.

Se le regioni vengono create direttamente tramite l'API del NavigationServer, bisogna assegnarvi manualmente una mappa di navigazione.

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)

Nota

Le regioni di navigazione si possono assegnare a una sola mappa di navigazione. Se una regione esistente viene assegnata a una nuova mappa di navigazione, verrà rimossa dalla mappa precedente.