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.

CollisionObject2D

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

Hérité par : Area2D, PhysicsBody2D

Classe de base abstraite pour les objets physiques 2D.

Description

Classe de base abstraite pour les objets physiques 2D. CollisionObject2D peut contenir n'importe quel nombre de Shape2D pour les collisions. Chaque forme doit être attribuée à un propriétaire de forme. Les propriétaires de forme ne sont pas des nœuds et ne figurent pas dans l'éditeur, mais sont accessibles via le code en utilisant les méthodes shape_owner_*.

Note : Seules les collisions entre des objets dans le même caneveas (Viewport ou CanvasLayer) sont supportées. Le comportement des collisions entre des objets dans différents canevas est indéfini.

Propriétés

int

collision_layer

1

int

collision_mask

1

float

collision_priority

1.0

DisableMode

disable_mode

0

bool

input_pickable

true

Méthodes

void

_input_event(viewport: Viewport, event: InputEvent, shape_idx: int) virtual

void

_mouse_enter() virtual

void

_mouse_exit() virtual

void

_mouse_shape_enter(shape_idx: int) virtual

void

_mouse_shape_exit(shape_idx: int) virtual

int

create_shape_owner(owner: Object)

bool

get_collision_layer_value(layer_number: int) const

bool

get_collision_mask_value(layer_number: int) const

RID

get_rid() const

Vector2

get_shape_owner_one_way_collision_direction(owner_id: int) const

float

get_shape_owner_one_way_collision_margin(owner_id: int) const

PackedInt32Array

get_shape_owners()

bool

is_shape_owner_disabled(owner_id: int) const

bool

is_shape_owner_one_way_collision_enabled(owner_id: int) const

void

remove_shape_owner(owner_id: int)

void

set_collision_layer_value(layer_number: int, value: bool)

void

set_collision_mask_value(layer_number: int, value: bool)

int

shape_find_owner(shape_index: int) const

void

shape_owner_add_shape(owner_id: int, shape: Shape2D)

void

shape_owner_clear_shapes(owner_id: int)

Object

shape_owner_get_owner(owner_id: int) const

Shape2D

shape_owner_get_shape(owner_id: int, shape_id: int) const

int

shape_owner_get_shape_count(owner_id: int) const

int

shape_owner_get_shape_index(owner_id: int, shape_id: int) const

Transform2D

shape_owner_get_transform(owner_id: int) const

void

shape_owner_remove_shape(owner_id: int, shape_id: int)

void

shape_owner_set_disabled(owner_id: int, disabled: bool)

void

shape_owner_set_one_way_collision(owner_id: int, enable: bool)

void

shape_owner_set_one_way_collision_direction(owner_id: int, direction: Vector2)

void

shape_owner_set_one_way_collision_margin(owner_id: int, margin: float)

void

shape_owner_set_transform(owner_id: int, transform: Transform2D)


Signaux

input_event(viewport: Node, event: InputEvent, shape_idx: int) 🔗

Émis lorsqu'un événement d'entrée se produit. Nécessite input_pickable de valoir true et au moins un des bits de collision_layer d'être défini. Voir _input_event() pour plus de détails.


mouse_entered() 🔗

Émis lorsque le pointeur de la souris entre dans l'une des formes de cet objet. Nécessite que input_pickable vaille true et au moins un bit de collision_layer de défini. Notez que le déplacement entre différentes formes dans un seul CollisionObject2D ne fera pas émettre ce signal.

Note : En raison du manque de détection de collision continue, ce signal peut ne pas être émis dans l'ordre prévu si la souris se déplace assez rapidement et que la zone du CollisionObject2D est petite. Ce signal peut aussi ne pas être émis si un autre CollisionObject2D recouvre le CollisionObject2D en question.


mouse_exited() 🔗

Émis lorsque le pointeur de la souris sort de toutes les formes de cet objet. Nécessite que input_pickable vaille true et au moins qu'un bit de collision_layer soit défini. Notez que se déplacer entre deux formes différentes dans un unique CollisionObject2D ne causera pas à ce signal d'être émis.

Note : En raison de l'absence de détection de collision continue, ce signal peut ne pas être émis dans l'ordre prévu si la souris se déplace assez vite et que la zone du CollisionObject2D est petite. Ce signal peut aussi ne pas être émis si un autre CollisionObject2D chevauche le CollisionObject2D en question.


mouse_shape_entered(shape_idx: int) 🔗

Émis lorsque le curseur de la souris entre dans l'une des formes de cet objet ou se déplace d'une forme à l'autre. shape_idx est l'index d'enfant de la Shape2D nouvellement entrée. Nécessite que input_pickable vaille true et au moins un des bits de collision_layer d'être défini.


mouse_shape_exited(shape_idx: int) 🔗

Émis lorsque le curseur de la souris entre dans l'une des formes de l'objet. shape_idx est l'index de l'enfant du Shape2D sorti. Nécessite que input_pickable vaille true et au moins un des bits de collision_layer d'être défini.


Énumérations

enum DisableMode: 🔗

DisableMode DISABLE_MODE_REMOVE = 0

Quand Node.process_mode est défini à Node.PROCESS_MODE_DISABLED, le retirer de la simulation physique pour arrêter toutes les interactions physiques avec ce CollisionObject2D.

Ré-ajouté automatiquement à la simulation physique lorsque le Node est de nouveau traité.

DisableMode DISABLE_MODE_MAKE_STATIC = 1

Quand Node.process_mode est défini à Node.PROCESS_MODE_DISABLED, rend le corps statique. N'affecte pas les Area2D. Les PhysicsBody2D ne peuvent être affectés par des forces ou d'autres corps lorsqu'ils sont statiques.

Rend automatiquement au PhysicsBody2D son mode original lorsque le Node est de nouveau traité.

DisableMode DISABLE_MODE_KEEP_ACTIVE = 2

Quand Node.process_mode est défini à Node.PROCESS_MODE_DISABLED, ne pas affecter la simulation physique.


Descriptions des propriétés

int collision_layer = 1 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

La couche physique où est ce CollisionObject2D. Les objets de collision peuvent exister dans un ou plusieurs des 32 couches différentes. Voir aussi collision_mask.

Note : Un objet A peut détecter un contact avec l'objet B seulement si l'objet B est dans l'une des couches que l'objet A scanne. Voir Niveaux et masques de collisions dans la documentation pour plus d'informations.


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

La couche physique que ce CollisionObject2D scanne. Les objets de collision peuvent exister dans une ou plusieurs des 32 couches différentes. Voir aussi collision_mask.

Note : Un objet A peut détecter un contact avec l'objet B seulement si l'objet B est dans l'une des couches que l'objet A scanne. Voir Niveaux et masques de collisions dans la documentation pour plus d'informations.


float collision_priority = 1.0 🔗

  • void set_collision_priority(value: float)

  • float get_collision_priority()

La priorité utilisée pour résoudre la collision lors de la pénétration. Plus la priorité est élevée, plus la pénétration dans l'objet sera faible. Cela peut par exemple être utilisé pour empêcher le joueur de franchir les limites d'un niveau.


DisableMode disable_mode = 0 🔗

Définit le comportement physique lorsque Node.process_mode est défini à Node.PROCESS_MODE_DISABLED.


bool input_pickable = true 🔗

  • void set_pickable(value: bool)

  • bool is_pickable()

Si true, cet objet peut être sélectionné. Ces objets peuvent détecter l'entrée/la sortie du pointeur de la souris sur eux, et si la souris pointe sur l'objet, signaler par des événements d'entrée. Nécessite au moins un bit de collision_layer d'être réglé.


Descriptions des méthodes

void _input_event(viewport: Viewport, event: InputEvent, shape_idx: int) virtual 🔗

Accepte les InputEvents non gérés. shape_idx est l'index de l'enfant du Shape2D cliqué. Connectez-vous à input_event pour récupérer facilement ces événements.

Note : _input_event() nécessite input_pickable de valoir true et au moins un bit de collision_layer d'être défini.


void _mouse_enter() virtual 🔗

Appelée lorsque le pointeur de la souris entre dans l'une des formes de cet objet. Nécessite input_pickable de valoir true et au moins un bit de collision_layer de défini. Notez que le déplacement entre différentes formes dans un seul CollisionObject2D ne causera pas l'appel de cette fonction.


void _mouse_exit() virtual 🔗

Appelée quand le pointeur de la souris sort toutes les formes de cet objet. Nécessite input_pickable de valoir true et au moins un bit de collision_layer de defini. Notez que le déplacement entre différentes formes dans un seul CollisionObject2D ne causera pas l'appel de cette fonction.


void _mouse_shape_enter(shape_idx: int) virtual 🔗

Appelée lorsque le pointeur de la souris entre dans l'une des formes de cet objet ou se déplace d'une forme à une autre. shape_idx est l'index de l'enfant de la Shape2D nouvellement entrée. Nécessite input_pickable de valoir true et au moins un bit de collision_layer d'être défini.


void _mouse_shape_exit(shape_idx: int) virtual 🔗

Appelée quand le pointeur de la souris sort de l'une des formes de cet objet. shape_idx est l'index de l'enfant du Shape2D sorti. Nécessite input_pickable de valoir true et au moins un bit de collision_layer d'être défini.


int create_shape_owner(owner: Object) 🔗

Crée un nouveau propriétaire de forme pour l'objet donné. Renvoie l’owner_id du nouveau propriétaire pour une prochaine référence.


bool get_collision_layer_value(layer_number: int) const 🔗

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


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.


RID get_rid() const 🔗

Renvoie le RID de l'objet.


Vector2 get_shape_owner_one_way_collision_direction(owner_id: int) const 🔗

Returns the one_way_collision_direction of the shape owner identified by the given owner_id.


float get_shape_owner_one_way_collision_margin(owner_id: int) const 🔗

Renvoie la one_way_collision_margin du propriétaire de la forme identifié par le owner_id donné.


PackedInt32Array get_shape_owners() 🔗

Renvoie un Array d'identifiants owner_id. Vous pouvez utiliser ces identifiants dans les méthodes prenant owner_id comme argument.


bool is_shape_owner_disabled(owner_id: int) const 🔗

Si true, le propriétaire de forme et ses formes sont désactivés.


bool is_shape_owner_one_way_collision_enabled(owner_id: int) const 🔗

Renvoie true si les collisions pour le propriétaire de forme venant de ce CollisionObject2D ne seront pas signalées aux CollisionObject2D entrants en collision.


void remove_shape_owner(owner_id: int) 🔗

Supprime le propriétaire de forme donné.


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

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


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.


int shape_find_owner(shape_index: int) const 🔗

Renvoie le owner_id de la forme spécifiée.


void shape_owner_add_shape(owner_id: int, shape: Shape2D) 🔗

Ajoute un Shape2D au propriétaire de forme.


void shape_owner_clear_shapes(owner_id: int) 🔗

Enlève toutes les formes au propriétaire de forme.


Object shape_owner_get_owner(owner_id: int) const 🔗

Renvoie l'objet parent du propriétaire de forme spécifié.


Shape2D shape_owner_get_shape(owner_id: int, shape_id: int) const 🔗

Renvoie la Shape2D avec l'identifiant donné du propriétaire de forme donné.


int shape_owner_get_shape_count(owner_id: int) const 🔗

Renvoie le nombre de formes que le propriétaire de forme contient.


int shape_owner_get_shape_index(owner_id: int, shape_id: int) const 🔗

Renvoie l'index de l'enfant de la Shape2D avec l'identifiant donné du propriétaire de forme donné.


Transform2D shape_owner_get_transform(owner_id: int) const 🔗

Renvoie le Transform2D du propriétaire de la forme.


void shape_owner_remove_shape(owner_id: int, shape_id: int) 🔗

Retire la forme du propriétaire de forme donné.


void shape_owner_set_disabled(owner_id: int, disabled: bool) 🔗

Si true, désactive le propriétaire spécifié de la forme.


void shape_owner_set_one_way_collision(owner_id: int, enable: bool) 🔗

Si enable vaut true, les collisions pour le propriétaire de forme originant de ce CollisionObject2D ne seront pas rapportées aux CollisionObject2D entrant en collision.


void shape_owner_set_one_way_collision_direction(owner_id: int, direction: Vector2) 🔗

Sets the one_way_collision_direction of the shape owner identified by the given owner_id to direction.


void shape_owner_set_one_way_collision_margin(owner_id: int, margin: float) 🔗

Définit la marge one_way_collision_margin du propriétaire de la forme identifié par le owner_id donné à margin pixels.


void shape_owner_set_transform(owner_id: int, transform: Transform2D) 🔗

Définit la Transform2D du propriétaire de forme spécifié.