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...
Utilizzo di NavigationMap
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()
public partial class MyNode2D : Node2D
{
public override void _Ready()
{
Rid defaultNavigationMapRid = GetWorld2D().NavigationMap;
}
}
extends Node3D
func _ready() -> void:
var default_navigation_map_rid: RID = get_world_3d().get_navigation_map()
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
Rid defaultNavigationMapRid = GetWorld3D().NavigationMap;
}
}
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)
public partial class MyNode2D : Node2D
{
public override void _Ready()
{
Rid newNavigationMap = NavigationServer2D.MapCreate();
NavigationServer2D.MapSetActive(newNavigationMap, true);
}
}
extends Node3D
func _ready() -> void:
var new_navigation_map: RID = NavigationServer3D.map_create()
NavigationServer3D.map_set_active(new_navigation_map, true)
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
Rid newNavigationMap = NavigationServer3D.MapCreate();
NavigationServer3D.MapSetActive(newNavigationMap, true);
}
}
Nota
Non c'è alcuna differenza tra le mappe di navigazione create con l'API del NavigationServer2D o con l'API del NavigationServer3D.