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...
RayCast2D
Eredita: Node2D < CanvasItem < Node < Object
Un raggio nello spazio 2D, utilizzato per trovare il primo oggetto di collisione che interseca.
Descrizione
Un raycast rappresenta un raggio dalla sua origine alla sua target_position che trova l'oggetto più vicino lungo il suo percorso, se ne interseca uno.
RayCast2D può ignorare alcuni oggetti aggiungendoli a un elenco di eccezioni, facendo in modo che il suoi risultati di rilevamento ignorino Area2D (collide_with_areas) o PhysicsBody2D (collide_with_bodies), o configurando gli strati di fisica.
RayCast2D calcola l'intersezione a ogni frame di fisica e mantiene il risultato fino al frame di fisica successivo. Per un raycast immediato, o se vuoi configurare un RayCast2D più volte all'interno dello stesso frame di fisica, usa force_raycast_update().
Per passare su una regione nello spazio 2D, puoi approssimare la regione con più RayCast2D o usare ShapeCast2D.
Tutorial
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
void |
add_exception(node: CollisionObject2D) |
void |
add_exception_rid(rid: RID) |
void |
|
void |
|
get_collider() const |
|
get_collider_rid() const |
|
get_collider_shape() const |
|
get_collision_mask_value(layer_number: int) const |
|
get_collision_normal() const |
|
get_collision_point() 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 del raggio. 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.
Se true, le collisioni saranno riportate.
Se true, questo raycast non riporterà collisioni con il suo nodo padre. Questa proprietà ha effetto solo se il nodo padre è un CollisionObject2D. Vedi anche Node.get_parent() e add_exception().
bool hit_from_inside = false 🔗
Se true, il raggio rileverà un riscontro se iniziato all'interno di una forma. In questo caso la normale di collisione sarà Vector2(0, 0). Non influisce sulle forme poligonali concave.
Vector2 target_position = Vector2(0, 50) 🔗
Il punto di destinazione del raggio, relativo alla Node2D.position di questo raycast.
Descrizioni dei metodi
void add_exception(node: CollisionObject2D) 🔗
Aggiunge un'eccezione di collisione in modo che il raggio non riporti le collisioni con il nodo node.
void add_exception_rid(rid: RID) 🔗
Aggiunge un'eccezione di collisione in modo che il raggio non riporti le collisioni con il RID specificato.
void clear_exceptions() 🔗
Rimuove tutte le eccezioni di collisione per questo raggio.
void force_raycast_update() 🔗
Aggiorna immediatamente le informazioni di collisione per il raggio, senza attendere la successiva chiamata _physics_process. Utilizza questo metodo, ad esempio, quando il raggio o il suo genitore hanno cambiato stato.
Nota: enabled non deve essere true affinché ciò funzioni.
Restituisce il primo oggetto che il raggio interseca, oppure null se nessun oggetto interseca il raggio (ovvero is_colliding() restituisce false).
Nota: Non è garantito che questo oggetto sia un CollisionObject2D. Ad esempio, se il raggio interseca un TileMapLayer, il metodo restituirà un'istanza di TileMapLayer.
RID get_collider_rid() const 🔗
Restituisce il RID del primo oggetto che il raggio interseca, oppure un RID vuoto se nessun oggetto interseca il raggio (ovvero is_colliding() restituisce false).
int get_collider_shape() const 🔗
Restituisce l'ID della forma del primo oggetto che il raggio interseca, o 0 se nessun oggetto interseca il raggio (ovvero is_colliding() restituisce false).
Per ottenere il nodo forma intersecato, per un obiettivo CollisionObject2D, usa:
var target = get_collider() # Un CollisionObject2D.
var shape_id = get_collider_shape() # L'indice della forma nel collisore.
var owner_id = target.shape_find_owner(shape_id) # L'ID del proprietario nel collisore.
var shape = target.shape_owner_get_owner(owner_id)
var target = (CollisionObject2D)GetCollider(); // Un CollisionObject2D.
var shapeId = GetColliderShape(); // L'indice della forma nel collisore.
var ownerId = target.ShapeFindOwner(shapeId); // L'ID del proprietario nel collisore.
var shape = target.ShapeOwnerGetOwner(ownerId);
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() const 🔗
Restituisce la normale della forma dell'oggetto intersecante nel punto di collisione, oppure Vector2(0, 0) se il raggio inizia all'interno della forma e hit_from_inside è true.
Nota: Verifica che is_colliding() restituisca true prima di chiamare questo metodo per assicurarti che la normale restituita sia valida e aggiornata.
Vector2 get_collision_point() const 🔗
Restituisce il punto di collisione in cui il raggio interseca l'oggetto più vicino, nel sistema di coordinate globali. Se hit_from_inside è true e il raggio inizia all'interno di una forma di collisione, questa funzione restituirà il punto di origine del raggio.
Nota: Verifica che is_colliding() restituisca true prima di chiamare questo metodo per assicurarti che il punto restituito sia valido e aggiornato.
Restituisce se un oggetto interseca il vettore del raggio (considerando la lunghezza del vettore).
void remove_exception(node: CollisionObject2D) 🔗
Rimuove un'eccezione di collisione in modo che il raggio possa riportare le collisioni con il nodo node.
void remove_exception_rid(rid: RID) 🔗
Rimuove un'eccezione di collisione in modo che il raggio possa riportare 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.