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
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
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Méthodes
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) |
Descriptions des propriétés
bool collide_with_areas = false 🔗
Si true, les collisions avec les Area2Ds seront rapportées.
bool collide_with_bodies = true 🔗
Si true, les collisions avec les PhysicsBody2Ds seront rapportées.
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 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().
Si true, les collisions seront signalées.
Si true, le nœud parent sera exclu lors de la détection des collisions.
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.
Le nombre d'intersections peut être limité avec ce paramètre, pour réduire le temps de traitement.
La forme à utiliser pour les requêtes de collision.
Vector2 target_position = Vector2(0, 50) 🔗
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.
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.