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.

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à

bool

collide_with_areas

false

bool

collide_with_bodies

true

int

collision_mask

1

bool

enabled

true

bool

exclude_parent

true

bool

hit_from_inside

false

Vector2

target_position

Vector2(0, 50)

Metodi

void

add_exception(node: CollisionObject2D)

void

add_exception_rid(rid: RID)

void

clear_exceptions()

void

force_raycast_update()

Object

get_collider() const

RID

get_collider_rid() const

int

get_collider_shape() const

bool

get_collision_mask_value(layer_number: int) const

Vector2

get_collision_normal() const

Vector2

get_collision_point() const

bool

is_colliding() const

void

remove_exception(node: CollisionObject2D)

void

remove_exception_rid(rid: RID)

void

set_collision_mask_value(layer_number: int, value: bool)


Descrizioni delle proprietà

bool collide_with_areas = false 🔗

  • void set_collide_with_areas(value: bool)

  • bool is_collide_with_areas_enabled()

Se true, saranno riportate le collisioni con i nodi Area2D.


bool collide_with_bodies = true 🔗

  • void set_collide_with_bodies(value: bool)

  • bool is_collide_with_bodies_enabled()

Se true, saranno riportate le collisioni con i nodi PhysicsBody2D.


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

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.


bool enabled = true 🔗

  • void set_enabled(value: bool)

  • bool is_enabled()

Se true, le collisioni saranno riportate.


bool exclude_parent = true 🔗

  • void set_exclude_parent_body(value: bool)

  • bool get_exclude_parent_body()

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 🔗

  • void set_hit_from_inside(value: bool)

  • bool is_hit_from_inside_enabled()

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) 🔗

  • void set_target_position(value: Vector2)

  • Vector2 get_target_position()

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.


Object get_collider() const 🔗

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)

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.


bool is_colliding() const 🔗

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.