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.

PhysicsDirectBodyState3D

Hérite de : Object

Hérité par : PhysicsDirectBodyState3DExtension

Fournit un accès direct à un corps physique dans le PhysicsServer3D.

Description

Fournit un accès direct à un corps physique dans le PhysicsServer3D, permettant des changements sécurisés aux propriétés physiques. Cet objet est passé par le callback d'état direct de RigidBody3D, et est pensé pour changer l'état direct de ce corps. Voir RigidBody3D._integrate_forces().

Tutoriels

Propriétés

Vector3

angular_velocity

Vector3

center_of_mass

Vector3

center_of_mass_local

int

collision_layer

int

collision_mask

Vector3

inverse_inertia

Basis

inverse_inertia_tensor

float

inverse_mass

Vector3

linear_velocity

Basis

principal_inertia_axes

bool

sleeping

float

step

float

total_angular_damp

Vector3

total_gravity

float

total_linear_damp

Transform3D

transform

Méthodes

void

add_constant_central_force(force: Vector3 = Vector3(0, 0, 0))

void

add_constant_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0))

void

add_constant_torque(torque: Vector3)

void

apply_central_force(force: Vector3 = Vector3(0, 0, 0))

void

apply_central_impulse(impulse: Vector3 = Vector3(0, 0, 0))

void

apply_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0))

void

apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0))

void

apply_torque(torque: Vector3)

void

apply_torque_impulse(impulse: Vector3)

Vector3

get_constant_force() const

Vector3

get_constant_torque() const

RID

get_contact_collider(contact_idx: int) const

int

get_contact_collider_id(contact_idx: int) const

Object

get_contact_collider_object(contact_idx: int) const

Vector3

get_contact_collider_position(contact_idx: int) const

int

get_contact_collider_shape(contact_idx: int) const

Vector3

get_contact_collider_velocity_at_position(contact_idx: int) const

int

get_contact_count() const

Vector3

get_contact_impulse(contact_idx: int) const

Vector3

get_contact_local_normal(contact_idx: int) const

Vector3

get_contact_local_position(contact_idx: int) const

int

get_contact_local_shape(contact_idx: int) const

Vector3

get_contact_local_velocity_at_position(contact_idx: int) const

PhysicsDirectSpaceState3D

get_space_state()

Vector3

get_velocity_at_local_position(local_position: Vector3) const

void

integrate_forces()

void

set_constant_force(force: Vector3)

void

set_constant_torque(torque: Vector3)


Descriptions des propriétés

Vector3 angular_velocity 🔗

  • void set_angular_velocity(value: Vector3)

  • Vector3 get_angular_velocity()

La vitesse de rotation du corps en radians par seconde.


Vector3 center_of_mass 🔗

Le centre de masse du corps relatif au centre du corps dans le système de coordonnées global.


Vector3 center_of_mass_local 🔗

  • Vector3 get_center_of_mass_local()

La position du centre de masse du corps dans le système de coordonnées local du corps.


int collision_layer 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

La couche de collision du corps.


int collision_mask 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

Le masque de collision du corps.


Vector3 inverse_inertia 🔗

L'inverse de l'inertie du corps.


Basis inverse_inertia_tensor 🔗

  • Basis get_inverse_inertia_tensor()

L'inverse du tenseur d'inertie du corps.


float inverse_mass 🔗

  • float get_inverse_mass()

L'inverse de la masse du corps.


Vector3 linear_velocity 🔗

  • void set_linear_velocity(value: Vector3)

  • Vector3 get_linear_velocity()

La vitesse linéaire du corps en unités par secondes.


Basis principal_inertia_axes 🔗

  • Basis get_principal_inertia_axes()

There is currently no description for this property. Please help us by contributing one!


bool sleeping 🔗

  • void set_sleep_state(value: bool)

  • bool is_sleeping()

Si true, le corps est actuellement au repos (inactif).


float step 🔗

L'étape de temps (delta) utilisé pour la simulation.


float total_angular_damp 🔗

  • float get_total_angular_damp()

Le vitesse à laquelle le corps cesse de tourner, s'il n'y a pas d'autres forces qui le déplacent.


Vector3 total_gravity 🔗

Le vecteur total de gravité actuellement appliqué à ce corps.


float total_linear_damp 🔗

  • float get_total_linear_damp()

Le vitesse à laquelle le corps cesse de se déplacer, s'il n'y a pas d'autres forces qui le déplacent.


Transform3D transform 🔗

La matrice de transformation du corps.


Descriptions des méthodes

void add_constant_central_force(force: Vector3 = Vector3(0, 0, 0)) 🔗

Ajoute une force directionnelle constante n'affectant pas la rotation, qui continue d'être appliquée au cours du temps jusqu'à ce qu'elle soit enlevée avec constant_force = Vector3(0, 0, 0).

Ceci est équivalent à utiliser add_constant_force() au centre de masse du corps.


void add_constant_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗

Ajoute une force positionnée constante au corps qui continue d'être appliquée au cours du temps jusqu'à ce qu'elle soit nettoyée avec constant_force = Vector3(0, 0, 0).

position est le décalage depuis l'origine du corps dans les coordonnées globales.


void add_constant_torque(torque: Vector3) 🔗

Ajoute une force de rotation constante n'affectant pas la position, qui continue d'être appliquée au cours du temps jusqu'à ce qu'elle soit enlevée avec constant_torque = Vector3(0, 0, 0).


void apply_central_force(force: Vector3 = Vector3(0, 0, 0)) 🔗

Applique une force directionnelle n'affectant pas la rotation. Une force est dépendante du temps et destinée à être appliquée chaque mise à jour physique.

Ceci est équivalent à utiliser apply_force() au centre de masse du corps.


void apply_central_impulse(impulse: Vector3 = Vector3(0, 0, 0)) 🔗

Applique une impulsion directionnelle n'affectant pas la rotation.

Une impulsion est indépendante du temps ! Appliquer une impulsion à chaque trame entraînerait une force dépendante du taux de rafraîchissement. Pour cette raison, elle ne devrait être utilisée que pour simuler des impacts ponctuels (utilisez les fonctions "_force" sinon).

Ceci est équivalent à utiliser apply_impulse() au centre de masse du corps.


void apply_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗

Applique une force positionnée au corps. Une force est dépendante du temps et destinée à être appliquée à chaque mise à jour physique.

position est le décalage depuis l'origine du corps dans les coordonnées globales.


void apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗

Applique une impulsion positionnée au corps.

Une impulsion est indépendante du temps ! Appliquer une impulsion à chaque trame entraînerait une force dépendante du taux de rafraîchissement. Pour cette raison, elle ne devrait être utilisée que pour simuler des impacts ponctuels (utilisez les fonctions "_force" sinon).

position est le décalage depuis l'origine du corps dans les coordonnées globales.


void apply_torque(torque: Vector3) 🔗

Applique une force de rotation sans affecter la position. Une force est dépendante du temps et destinée à être appliquée à chaque mise à jour physique.

Note : L'inverse de l'inertie (inverse_inertia) est nécessaire pour que cela fonctionne. Pour avoir de l'inverse de l'inertie (inverse_inertia), un CollisionShape3D actif doit être un enfant du nœud, ou vous pouvez définir manuellement inverse_inertia.


void apply_torque_impulse(impulse: Vector3) 🔗

Applique une impulsion de rotation au corps sans affecter la position.

Une impulsion est indépendante du temps ! Appliquer une impulsion à chaque trame entraînerait une force dépendante du taux de rafraîchissement. Pour cette raison, elle ne devrait être utilisée que pour simuler des impacts ponctuels (utilisez les fonctions "_force" sinon).

Note : L'inverse de l'inertie (inverse_inertia) est nécessaire pour que cela fonctionne. Pour avoir de l'inverse de l'inertie (inverse_inertia), un CollisionShape3D actif doit être un enfant du nœud, ou vous pouvez définir manuellement inverse_inertia.


Vector3 get_constant_force() const 🔗

Renvoie les forces positionnelles constantes totales du corps appliquées lors de chaque mise à jour physique.

Voir add_constant_force() et add_constant_central_force().


Vector3 get_constant_torque() const 🔗

Renvoie les forces de rotation constantes totales du corps appliquées lors de chaque mise à jour physique.

Voir add_constant_torque().


RID get_contact_collider(contact_idx: int) const 🔗

Renvoie le RID du collisionneur.


int get_contact_collider_id(contact_idx: int) const 🔗

Renvoie l’id de l’objet du collisionneur.


Object get_contact_collider_object(contact_idx: int) const 🔗

Renvoie l'objet collisionneur.


Vector3 get_contact_collider_position(contact_idx: int) const 🔗

Renvoie la position du point de contact sur le collideur dans le système de coordonnées global.


int get_contact_collider_shape(contact_idx: int) const 🔗

Renvoie l'index de forme du collisionneur.


Vector3 get_contact_collider_velocity_at_position(contact_idx: int) const 🔗

Renvoie le vecteur de vélocité linéaire au point de contact à la collision.


int get_contact_count() const 🔗

Renvoie le nombre de contacts que ce corps a avec d'autres corps.

Note : Par défaut, cela renvoie 0 sauf si les corps sont configurés pour surveiller les contacts. Voir RigidBody3D.contact_monitor.


Vector3 get_contact_impulse(contact_idx: int) const 🔗

L'impulsion créée par le contact.


Vector3 get_contact_local_normal(contact_idx: int) const 🔗

Renvoie la normale locale au point de contact.


Vector3 get_contact_local_position(contact_idx: int) const 🔗

Renvoie la position du point de contact sur le corps dans le système de coordonnées global.


int get_contact_local_shape(contact_idx: int) const 🔗

Renvoie l'index de la forme locale de la collision.


Vector3 get_contact_local_velocity_at_position(contact_idx: int) const 🔗

Renvoie le vecteur de vélocité linéaire au point de contact du corps.


PhysicsDirectSpaceState3D get_space_state() 🔗

Renvoie l'état actuel de l'espace, utile pour les requêtes.


Vector3 get_velocity_at_local_position(local_position: Vector3) const 🔗

Returns the body's velocity at the given relative position.

local_position is the offset from the body origin in global coordinates.


void integrate_forces() 🔗

Met à jour la vitesse linéaire et angulaire du corps en appliquant la gravité et l'amortissement pour l'équivalent d'un tic de calcul de la physique.


void set_constant_force(force: Vector3) 🔗

Définit les forces positionnelles constantes totales du corps appliquées lors de chaque mise à jour physique.

Voir add_constant_force() et add_constant_central_force().


void set_constant_torque(torque: Vector3) 🔗

Définit les forces de rotation constantes totales du corps appliquées lors de chaque mise à jour physique.

Voir add_constant_torque().