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.

ShapeCast2D

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

Une forme 2D qui balaye une région de l'espace pour détecter des CollisionObject2Ds.

Description

Le shape casting permet de détecter des objets en collision en balayant sa forme shape le long de la direction du cast déterminée par la position cible target_position. Ceci est similaire à RayCast2D, mais il permet de balayer une région de l'espace, plutôt qu'une ligne droite. ShapeCast2D peut détecter plusieurs objets en collision. Il est utile pour des choses comme de larges faisceaux laser ou de magnétiser une forme simple à un sol.

Les chevauchements de collision immédiats peuvent être faits avec target_position défini à Vector2(0, 0) et en appelant force_shapecast_update() dans le même trame physique. Cela aide à surmonter certaines limites de Area2D lorsqu'elle est utilisée comme zone de détection instantanée, car les informations sur la collision ne lui sont pas immédiatement disponibles.

Note: Le shape casting est plus coûteux que le ray casting.

Propriétés

bool

collide_with_areas

false

bool

collide_with_bodies

true

int

collision_mask

1

Array

collision_result

[]

bool

enabled

true

bool

exclude_parent

true

float

margin

0.0

int

max_results

32

Shape2D

shape

Vector2

target_position

Vector2(0, 50)

Méthodes

void

add_exception(node: CollisionObject2D)

void

add_exception_rid(rid: RID)

void

clear_exceptions()

void

force_shapecast_update()

float

get_closest_collision_safe_fraction() const

float

get_closest_collision_unsafe_fraction() const

Object

get_collider(index: int) const

RID

get_collider_rid(index: int) const

int

get_collider_shape(index: int) const

int

get_collision_count() const

bool

get_collision_mask_value(layer_number: int) const

Vector2

get_collision_normal(index: int) const

Vector2

get_collision_point(index: int) 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 de la forme. Seuls les objets dans au moins une couche de collision activée dans le masque seront détectés. Voir Niveaux et masques de collisions dans la documentation pour plus d'informations.


Array collision_result = [] 🔗

  • Array get_collision_result()

Renvoie l'information de collision complète du balayage des collisions. Les données renvoyées sont les mêmes que dans la méthode PhysicsDirectSpaceState2D.get_rest_info().


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, le nœud parent sera exclu lors de la détection des collisions.


float margin = 0.0 🔗

  • void set_margin(value: float)

  • float get_margin()

La marge de collision pour la forme. Une marge plus grande permet de détecter les collisions de manière plus consistante, au coût de la précision.


int max_results = 32 🔗

  • void set_max_results(value: int)

  • int get_max_results()

Le nombre d'intersections peut être limité avec ce paramètre, pour réduire le temps de traitement.


Shape2D shape 🔗

La forme à utiliser pour les requêtes de collision.


Vector2 target_position = Vector2(0, 50) 🔗

  • void set_target_position(value: Vector2)

  • Vector2 get_target_position()

Le point de destination de la forme, relatif à la Node2D.position de ce nœud.


Descriptions des méthodes

void add_exception(node: CollisionObject2D) 🔗

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


void add_exception_rid(rid: RID) 🔗

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


void clear_exceptions() 🔗

Supprime toutes les exceptions de collision pour cette forme.


void force_shapecast_update() 🔗

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

**Note : ** Définir enabled sur true n'est pas nécessaire pour que cela fonctionne.


float get_closest_collision_safe_fraction() const 🔗

Renvoie la fraction de la distance depuis l'origine de ce cast à sa position cible target_position de combien la forme peut se déplacer sans déclencher une collision, en tant que valeur entre 0.0 et 1.0.


float get_closest_collision_unsafe_fraction() const 🔗

Renvoie la fraction de la distance depuis l'origine de ce cast à sa position cible target_position de combien la forme peut se déplacer sans déclencher une collision, en tant que valeur entre 0.0 et 1.0.

Dans des conditions idéales, ce serait la même que get_closest_collision_safe_fraction(), mais le shapecasting est calculé avec des étapes discrètes, ce qui fait que le point précis de collision peut se produire entre deux positions calculées.


Object get_collider(index: int) const 🔗

Renvoie l'objet Object en collision d'une des multiples collisions à index, ou null si aucun objet n'intersecte la forme (i.e. is_colliding() renvoie false).


RID get_collider_rid(index: int) const 🔗

Returns the RID of the collided object of one of the multiple collisions at index.


int get_collider_shape(index: int) const 🔗

Renvoie l'ID de forme de la forme en collision d'une des multiples collisions à index, ou 0 si aucun objet n'intersecte la forme (i.e. is_colliding() renvoie false).


int get_collision_count() const 🔗

Le nombre de collisions détectées au point d'impact. Utilisez ceci pour itérer sur plusieurs collisions telles que fournies par les méthodes get_collider(), get_collider_shape(), get_collision_point(), et get_collision_normal().


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(index: int) const 🔗

Renvoie la normale d'une des multiples collisions à index de l'objet intersectant.


Vector2 get_collision_point(index: int) const 🔗

Renvoie le point de collision d'une des multiples collisions à index où la forme intersecte l'objet en collision.

Note : Ce point est dans le système de coordonnées global.


bool is_colliding() const 🔗

Renvoie si un objet intersecte avec le vecteur de la forme (en considérant la longueur du vecteur).


void remove_exception(node: CollisionObject2D) 🔗

Supprime une exception de collision pour que la forme signale les collisions avec le nœud spécifié.


void remove_exception_rid(rid: RID) 🔗

Supprime une exception de collision pour que la forme signale les collisions 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.