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...
NavigationObstacle3D
Sperimentale: This class may be changed or removed in future versions.
Eredita: Node3D < Node < Object
Ostacolo 3D utilizzato per influenzare la preparazione della mesh di navigazione o limitare le velocità degli agenti controllati dall'evasione.
Descrizione
Un ostacolo necessita di una mappa di navigazione e di un contorno di vertices definiti per funzionare correttamente. I contorni non possono incrociarsi o sovrapporsi e sono limitati a una proiezione piana. Ciò significa che l'asse y dei vertici è ignorato, al suo posto è utilizzata la posizione globale dell'asse y dell'ostacolo per il posizionamento. La forma proiettata è estrusa dall'altezza degli ostacoli lungo l'asse y.
È possibile includere gli ostacoli nel processo di preparazione della mesh di navigazione quando affect_navigation_mesh è abilitato. Non aggiungono geometria percorribile, ma il loro ruolo è quello di scartare altra geometria sorgente all'interno della forma. Questo può essere utilizzato per impedire che la mesh di navigazione appaia in luoghi indesiderati, ad esempio all'interno di geometria "solida" o sopra di essa. Se carve_navigation_mesh è abilitato, la forma preparata non sarà influenzata dagli offset della preparazione della mesh di navigazione, ad esempio il raggio degli agenti.
Con avoidance_enabled l'ostacolo può limitare le velocità di evasione degli agenti di evasione. Se i vertici dell'ostacolo sono avvolti in senso orario, gli agenti di evasione saranno spinti dentro dall'ostacolo, altrimenti, gli agenti di evasione saranno spinti fuori. Gli ostacoli che utilizzano vertici ed evasione possono deformarsi in una nuova posizione, ma non dovrebbero essere spostati a ogni singolo frame, poiché ogni modifica richiede una ricostruzione della mappa di evasione.
Tutorial
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
get_avoidance_layer_value(layer_number: int) const |
|
get_navigation_map() const |
|
get_rid() const |
|
void |
set_avoidance_layer_value(layer_number: int, value: bool) |
void |
set_navigation_map(navigation_map: RID) |
Descrizioni delle proprietà
bool affect_navigation_mesh = false 🔗
Se abilitato e analizzato in un processo di preparazione della mesh di navigazione, l'ostacolo scarterà la geometria sorgente all'interno della sua forma definita da vertices e height.
bool avoidance_enabled = true 🔗
Se true l'ostacolo influenza l'evasione usando degli agenti.
Un campo di bit che determina gli strati di evasione per questo ostacolo. Gli agenti con un bit corrispondente sulla loro maschera di evasione eviteranno questo ostacolo.
bool carve_navigation_mesh = false 🔗
Se abilitato, i vertici dell'ostacolo saranno intagliati nella mesh di navigazione preparata con la forma non influenzata da offset aggiuntivi (ad esempio il raggio degli agenti).
Sarà comunque influenzata da un'ulteriore post-elaborazione del processo di preparazione, come la semplificazione di spigoli e poligoni.
Richiede che affect_navigation_mesh sia abilitato.
Imposta l'altezza dell'ostacolo utilizzata nell'evasione 2D. L'evasione 2D mediante l'agente ignora gli ostacoli che si trovano al di sotto o al di sopra di esso.
Imposta il raggio di evasione per l'ostacolo.
bool use_3d_avoidance = false 🔗
Se true l'ostacolo influenza l'evasione 3D attraverso l'agente con il radius dell'ostacolo.
Se false l'ostacolo influenza l'evasione 2D attraverso l'agente con sia vertices dell'ostacolo sia radius dell'ostacolo.
Vector3 velocity = Vector3(0, 0, 0) 🔗
Imposta la velocità desiderata per l'ostacolo in modo che altri agenti possano prevedere meglio l'ostacolo se viene spostato con una velocità regolare (ogni frame) invece di essere deformato in una nuova posizione. Influisce solo sull'evasione entro il radius degli ostacoli. Non fa nulla per i vertici statici degli ostacoli.
PackedVector3Array vertices = PackedVector3Array() 🔗
void set_vertices(value: PackedVector3Array)
PackedVector3Array get_vertices()
I vertici del contorno dell'ostacolo. Se i vertici sono avvolti in senso orario gli agenti saranno spinti dentro dall'ostacolo, altrimenti saranno spinti fuori. I contorni non possono essere incrociati o sovrapposti. Se i vertici che utilizzano l'ostacolo vengono deformati in una nuova posizione, gli agenti non possono prevedere questo movimento e potrebbero rimanere intrappolati all'interno dell'ostacolo.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector3Array for more details.
Descrizioni dei metodi
bool get_avoidance_layer_value(layer_number: int) const 🔗
Restituisce se lo strato specificato del bitmask avoidance_layers è abilitato, dato un layer_number tra 1 e 32.
RID get_navigation_map() const 🔗
Restituisce il RID della mappa di navigazione per questo nodo NavigationObstacle. Questa funzione restituisce sempre la mappa impostata sul nodo NavigationObstacle e non la mappa dell'ostacolo astratto sul NavigationServer. Se la mappa dell'ostacolo viene modificata direttamente con l'API NavigationServer, il nodo NavigationObstacle non sarà a conoscenza della modifica della mappa. Utilizza set_navigation_map() per modificare la mappa di navigazione per NavigationObstacle e aggiornare anche l'ostacolo sul NavigationServer.
Restituisce il RID di questo ostacolo sul NavigationServer3D.
void set_avoidance_layer_value(layer_number: int, value: bool) 🔗
Basato su value, attiva o disattiva lo strato specificato nel bitmask avoidance_layers, dato un layer_number tra 1 e 32.
void set_navigation_map(navigation_map: RID) 🔗
Imposta il RID della mappa di navigazione questo nodo NavigationObstacle dovrebbe usare e aggiorna anche l'obstacolo obstacle sul NavigationServer.