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...
ShapeCast2D
Eredita: Node2D < CanvasItem < Node < Object
Una forma 2D che scansiona una regione di spazio per rilevare i CollisionObject2D.
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 RayCast2D, ma consente di scansionare una regione dello spazio, anziché una semplice linea retta. ShapeCast2D 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) e chiamando force_shapecast_update() all'interno dello stesso frame di fisica. Ciò aiuta a superare alcune limitazioni di Area2D 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: CollisionObject2D) |
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 |
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 Area2D.
bool collide_with_bodies = true 🔗
Se true, saranno riportate le collisioni con i nodi PhysicsBody2D.
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 PhysicsDirectSpaceState2D.get_rest_info().
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.
Vector2 target_position = Vector2(0, 50) 🔗
Il punto di destinazione della forma, relativo alla Node2D.position di questo nodo.
Descrizioni dei metodi
void add_exception(node: CollisionObject2D) 🔗
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.
Vector2 get_collision_normal(index: int) const 🔗
Restituisce la normale di una delle collisioni multiple all'indice index dell'oggetto intersecante.
Vector2 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: CollisionObject2D) 🔗
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 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.