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

Hérite de : Node2D < CanvasItem < Node < Object

Un rayon dans l'espace 2D, utilisé pour trouver le premier objet de collision qu'il croise.

Description

Un raycast représente un rayon de son origine à sa position cible target_position qui trouve l'objet le plus proche le long de son chemin, s'il en intersecte.

RayCast2D peut ignorer certains objets en les ajoutant à une liste d'exception, en faisant que son rapport de détection ignore des Area2Ds (collide_with_areas) ou des PhysicsBody2Ds (collide_with_bodies), ou en configurant des couches de physique.

RayCast2D calcule l'intersection à chaque trame physique, et il contient le résultat jusqu'à la prochaine trame physique. Pour un raycast immédiat, ou si vous voulez configurer un RayCast2D plusieurs fois dans la même trame physique, utilisez force_raycast_update().

Pour balayer une région de l'espace 2D, vous pouvez approximer la région avec plusieurs RayCast2D ou utiliser ShapeCast2D.

Tutoriels

Propriétés

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)

Méthodes

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)


Descriptions des propriétés

bool collide_with_areas = false 🔗

  • void set_collide_with_areas(value: bool)

  • bool is_collide_with_areas_enabled()

Si true, les collisions avec les Area2Ds seront rapportées.


bool collide_with_bodies = true 🔗

  • void set_collide_with_bodies(value: bool)

  • bool is_collide_with_bodies_enabled()

Si true, les collisions avec les PhysicsBody2Ds seront rapportées.


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

Le masque de collision du rayon. Seuls les objets présents dans au moins une couche de collision activée dans le masque seront détectés. Voir Couches et masques de collisions dans la documentation pour plus d'informations.


bool enabled = true 🔗

  • void set_enabled(value: bool)

  • bool is_enabled()

Si true, les collisions seront signalées.


bool exclude_parent = true 🔗

  • void set_exclude_parent_body(value: bool)

  • bool get_exclude_parent_body()

Si true, ce raycast ne signale pas les collisions avec son nœud parent. Cette propriété n'a un effet que si le nœud parent est un CollisionObject2D. Voir aussi Node.get_parent() et add_exception().


bool hit_from_inside = false 🔗

  • void set_hit_from_inside(value: bool)

  • bool is_hit_from_inside_enabled()

Si true, le rayon détectera un toucher lorsqu'il commence dans une forme. Dans ce cas, la normale de la collision sera Vector2(0, 0). N'affecte pas les formes de polygones concaves.


Vector2 target_position = Vector2(0, 50) 🔗

  • void set_target_position(value: Vector2)

  • Vector2 get_target_position()

Le point de destination du rayon, relatif à la position Node2D.position de ce raycast.


Descriptions des méthodes

void add_exception(node: CollisionObject2D) 🔗

Ajoute une exception de collision pour que le rayon ne signale pas les collisions avec le nœud node spécifié.


void add_exception_rid(rid: RID) 🔗

Ajoute une exception de collision pour que le rayon ne signale pas les collisions avec le RID spécifié.


void clear_exceptions() 🔗

Retire tous les exceptions de collision pour ce rayon.


void force_raycast_update() 🔗

Met à jour les informations de collision pour le rayon immédiatement, au lieu d'attendre le prochain appel à _physics_process. Utilisez cette méthode, par exemple, si le rayon ou son parent a changé d'état.

Note : enabled ne doit pas forcément valoir true pour que cela fonctionne.


Object get_collider() const 🔗

Renvoie le premier objet que le rayon intersecte, ou null si aucun objet n'intersecte le rayon (c'est-à-dire is_colliding() renvoie false).

Note : Cet objet n'est pas garanti d'être un CollisionObject2D. Par exemple, si le rayon intersecte un TileMapLayer, la méthode renverra une instance de TileMapLayer.


RID get_collider_rid() const 🔗

Renvoie le RID du premier objet que le rayon intersecte, ou un RID vide si aucun objet n'intersecte le rayon (c'est-à-dire is_colliding() renvoie false).


int get_collider_shape() const 🔗

Renvoie l'identifiant de forme du premier objet que le rayon intersecte, ou 0 si aucun objet n'intersecte le rayon (c.-à-d. que is_colliding() renvoie false).

Pour obtenir le nœud de la forme intersectée, pour une cible CollisionObject2D, utilisez :

var cible = get_collider() # Un CollisionObject2D.
var id_forme = get_collider_shape() # L'index de la forme dans le collider.
var id_proprietaire = cible.shape_find_owner(id_forme) # L'identifiant du propriétaire dans le collider.
var forme = cible.shape_owner_get_owner(id_proprietaire)

bool get_collision_mask_value(layer_number: int) const 🔗

Renvoie si la couche spécifiée du collision_mask est activée, étant donné un numéro de couche layer_number entre 1 et 32.


Vector2 get_collision_normal() const 🔗

Renvoie la normale à forme de l'objet intersectant au point de collision, ou Vector2(0, 0) si le rayon commence à l'intérieur de la forme et que hit_from_inside vaut true.

Note : Vérifiez que is_colliding() renvoie true avant d'appeler cette méthode pour vous assurer que la normale renvoyée est valide et à jour.


Vector2 get_collision_point() const 🔗

Renvoie le point de collision auquel le rayon intersecte l'objet le plus proche, dans le système de coordonnées global. Si hit_from_inside vaut true et que le rayon commence à l'intérieur d'une forme de collision, cette fonction renverra le point d'origine du rayon.

Note : Vérifiez que is_colliding() renvoie true avant d'appeler cette méthode pour vous assurer que le point renvoyé est valide et à jour.


bool is_colliding() const 🔗

Renvoie quand un objet intersecte avec le vecteur du rayon (en prenant en compte la longueur du vecteur).


void remove_exception(node: CollisionObject2D) 🔗

Retire une exception de collision pour que le rayon prenne en compte les collisions avec le nœud node spécifié.


void remove_exception_rid(rid: RID) 🔗

Retire une exception de collision pour que le rayon prenne en compte les collision avec le RID spécifié.


void set_collision_mask_value(layer_number: int, value: bool) 🔗

Selon value, active ou désactive la couche spécifiée dans le collision_mask, étant donné un numéro de couche layer_number entre 1 et 32.