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...
ShapeCast3D
Eredita: Node3D < Node < Object
Una forma 3D che scansiona una regione di spazio per rilevare i CollisionObject3D.
Descrizione
La proiezione di forme consente di rilevare oggetti di collisione scansionando il suo shape lungo la direzione di proiezione determinata da target_position. È simile a RayCast3D, ma consente di scansionare una regione dello spazio, anziché una semplice linea retta. ShapeCast3D può rilevare più oggetti di collisione. È utile per cose come ampi raggi laser o per agganciare una forma semplice a un pavimento.
Si possono sovrapporre collisioni immediatamente con target_position impostato su Vector2(0, 0, 0) e chiamando force_shapecast_update() all'interno dello stesso frame di fisica. Ciò aiuta a superare alcune limitazioni di Area3D quando è utilizzato come area di rilevamento istantanea, poiché le informazioni di collisione non sono immediatamente disponibili.
Nota: La proiezione di forme è più costosa da elaborare rispetto alla proiezione di raggi.
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
void |
add_exception(node: CollisionObject3D) |
void |
add_exception_rid(rid: RID) |
void |
|
void |
|
get_collider(index: int) const |
|
get_collider_rid(index: int) const |
|
get_collider_shape(index: int) const |
|
get_collision_count() const |
|
get_collision_mask_value(layer_number: int) const |
|
get_collision_normal(index: int) const |
|
get_collision_point(index: int) const |
|
is_colliding() const |
|
void |
|
void |
remove_exception_rid(rid: RID) |
void |
resource_changed(resource: Resource) |
void |
set_collision_mask_value(layer_number: int, value: bool) |
Descrizioni delle proprietà
bool collide_with_areas = false 🔗
Se true, saranno riportate le collisioni con i nodi Area3D.
bool collide_with_bodies = true 🔗
Se true, saranno riportate le collisioni con i nodi PhysicsBody3D.
La maschera di collisione della forma. Saranno rilevati solo gli oggetti in almeno uno strato di collisione abilitato nella maschera. Vedi Strati di collisione e maschere nella documentazione per ulteriori informazioni.
Array get_collision_result()
Restituisce tutte le informazioni sulla collisione dalla scansione delle collisioni. I dati restituiti sono gli stessi del metodo PhysicsDirectSpaceState3D.get_rest_info().
Color debug_shape_custom_color = Color(0, 0, 0, 1) 🔗
Il colore personalizzato da usare per disegnare la forma nell'editor e in fase di esecuzione se Forme di ollisioni visibili è abilitato nel menu Debug. Questo colore sarà evidenziato in fase di esecuzione se ShapeCast3D entra in collisione con qualcosa.
Se impostato su Color(0.0, 0.0, 0.0) (per impostazione predefinita), è usato il colore impostato in ProjectSettings.debug/shapes/collision/shape_color.
Se true, le collisioni saranno riportate.
Se true, il nodo genitore sarà escluso dal rilevamento delle collisioni.
Il margine di collisione per la forma. Un margine più ampio aiuta a rilevare le collisioni in modo più coerente, a scapito della precisione.
Con questo parametro è possibile limitare il numero di intersezioni, per ridurre i tempi di elaborazione.
La forma da utilizzare per le interrogazioni di collisione.
Vector3 target_position = Vector3(0, -1, 0) 🔗
Il punto di destinazione della forma, relativo alla Node3D.position di questo nodo.
Descrizioni dei metodi
void add_exception(node: CollisionObject3D) 🔗
Aggiunge un'eccezione di collisione in modo che la forma non riporti le collisioni con il nodo specificato.
void add_exception_rid(rid: RID) 🔗
Aggiunge un'eccezione di collisione in modo che la forma non riporti le collisioni con il RID specificato.
void clear_exceptions() 🔗
Rimuove tutte le eccezioni di collisione per questa forma.
void force_shapecast_update() 🔗
Aggiorna immediatamente le informazioni di collisione per la forma, senza attendere la successiva chiamata a _physics_process. Utilizza questo metodo, ad esempio, quando la forma o il suo genitore hanno cambiato stato.
Nota: Impostare enabled su true non è necessario affinché ciò funzioni.
float get_closest_collision_safe_fraction() const 🔗
Restituisce la frazione dall'origine di questo cast al suo target_position di quanto lontano la forma può muoversi senza provocare una collisione, come valore compreso tra 0.0 e 1.0..
float get_closest_collision_unsafe_fraction() const 🔗
Restituisce la frazione dall'origine di questo cast al suo target_position di quanto lontano la forma deve muoversi per provocare una collisione, come valore compreso tra 0.0 e 1.0..
In condizioni ideali, questo sarebbe lo stesso di get_closest_collision_safe_fraction(), tuttavia la proiezione della forma viene calcolata in passaggi discreti, quindi il punto preciso di collisione può verificarsi tra due posizioni calcolate.
Object get_collider(index: int) const 🔗
Restituisce l'Object in collisione di una delle molteplici collisioni all'indice index, oppure null se nessun oggetto interseca la forma (ovvero, is_colliding() restituisce false).
RID get_collider_rid(index: int) const 🔗
Restituisce il RID dell'oggetto in collisione di una delle molteplici collisioni all'indice index.
int get_collider_shape(index: int) const 🔗
Restituisce l'ID della forma in collisione di una delle molteplici collisioni all'indice index, oppure 0 se nessun oggetto interseca la forma (ovvero, is_colliding() restituisce false).
int get_collision_count() const 🔗
Il numero di collisioni rilevate nel punto di impatto. Utilizzalo per iterare su più collisioni come fornito dai metodi get_collider(), get_collider_shape(), get_collision_point() e get_collision_normal().
bool get_collision_mask_value(layer_number: int) const 🔗
Restituisce se lo strato specificato della collision_mask è abilitato, fornito un numero di strato layer_number tra 1 e 32.
Vector3 get_collision_normal(index: int) const 🔗
Restituisce la normale di una delle collisioni multiple all'indice index dell'oggetto intersecante.
Vector3 get_collision_point(index: int) const 🔗
Restituisce il punto di collisione di una delle molteplici collisioni all'indice index dove la forma interseca l'oggetto in collisione.
Nota: Questo punto è nel sistema di coordinate globale.
Restituisce un valore che indica se un oggetto interseca il vettore della forma (considerando la lunghezza del vettore).
void remove_exception(node: CollisionObject3D) 🔗
Rimuove un'eccezione di collisione in modo che la forma riporti le collisioni con il nodo specificato.
void remove_exception_rid(rid: RID) 🔗
Rimuove un'eccezione di collisione in modo che la forma riporti le collisioni con il RID specificato.
void resource_changed(resource: Resource) 🔗
Deprecato: Use Resource.changed instead.
Questo metodo non fa nulla.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
In base a value, abilita o disabilita lo strato specificato nel collision_mask, fornito un layer_number compreso tra 1 e 32.