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.

PhysicalBone3D

Hérite de : PhysicsBody3D < CollisionObject3D < Node3D < Node < Object

Un corps physique utilisé pour faire que des os dans un Skeleton3D réagissent à la physique.

Description

Le nœud PhysicalBone3D est un corps physique qui peut être utilisé pour faire que des os dans un Skeleton3D réagissent à la physique.

Note : Pour détecter des os physiques avec des raycasts, la propriété SkeletonModifier3D.active du PhysicalBoneSimulator3D parent doit être true et l'os du Skeleton3D doit être attribué au PhysicalBone3D correctement, cela signifie que get_bone_id() devrait renvoyer un identifiant valide (>=0).

Tutoriels

Propriétés

float

angular_damp

0.0

DampMode

angular_damp_mode

0

Vector3

angular_velocity

Vector3(0, 0, 0)

Transform3D

body_offset

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

float

bounce

0.0

bool

can_sleep

true

bool

custom_integrator

false

float

friction

1.0

float

gravity_scale

1.0

Transform3D

joint_offset

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

Vector3

joint_rotation

Vector3(0, 0, 0)

JointType

joint_type

0

float

linear_damp

0.0

DampMode

linear_damp_mode

0

Vector3

linear_velocity

Vector3(0, 0, 0)

float

mass

1.0

Méthodes

void

_integrate_forces(state: PhysicsDirectBodyState3D) virtual

void

apply_central_impulse(impulse: Vector3)

void

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

int

get_bone_id() const

bool

get_simulate_physics()

bool

is_simulating_physics()


Énumérations

enum DampMode: 🔗

DampMode DAMP_MODE_COMBINE = 0

Dans ce mode, la valeur d'amortissement du corps est ajoutée à toute valeur définie dans les zones ou la valeur par défaut.

DampMode DAMP_MODE_REPLACE = 1

Dans ce mode, la valeur d'amortissement du corps remplace toute valeur définie dans les zones ou la valeur par défaut.


enum JointType: 🔗

JointType JOINT_TYPE_NONE = 0

Aucune liaison n'est appliquée au PhysicalBone3D.

JointType JOINT_TYPE_PIN = 1

A pin joint is applied to the PhysicsBone3D.

JointType JOINT_TYPE_CONE = 2

Une liaison conique est appliquée au PhysicalBone3D.

JointType JOINT_TYPE_HINGE = 3

Une liaison avec charnière est appliquée au PhysicalBone3D.

JointType JOINT_TYPE_SLIDER = 4

Une liaison glissière est appliquée au PhysicalBone3D.

JointType JOINT_TYPE_6DOF = 5

Une liaison à 6 degrés de liberté est appliquée au PhysicalBone3D.


Descriptions des propriétés

float angular_damp = 0.0 🔗

  • void set_angular_damp(value: float)

  • float get_angular_damp()

Amortit la rotation du corps. Par défaut, le corps utilisera le paramètre de projet ProjectSettings.physics/3d/default_angular_damp ou toute redéfinition de valeur définie par une Area3D où se trouve le corps. Selon angular_damp_mode, vous pouvez définir que angular_damp soit ajouté à ou va remplacer la valeur d'amortissement du corps.

Voir ProjectSettings.physics/3d/default_angular_damp pour plus de détails sur l'amortissement.


DampMode angular_damp_mode = 0 🔗

Définit comment angular_damp est appliqué.


Vector3 angular_velocity = Vector3(0, 0, 0) 🔗

  • void set_angular_velocity(value: Vector3)

  • Vector3 get_angular_velocity()

La vitesse de rotation du PhysicalBone3D en radians par seconde.


Transform3D body_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗

Définit la transformation du corps.


float bounce = 0.0 🔗

  • void set_bounce(value: float)

  • float get_bounce()

La capacité du corps à rebondir. Les valeurs vont de 0 (pas de rebond) à 1 (rebond complet).

Note : Même avec bounce défini à 1.0, une partie de l'énergie sera perdue au cours du temps en raison de l'amortissement linéaire et angulaire. Pour avoir un PhysicalBone3D qui conserve toute son énergie au cours du temps, définissez bounce à 1.0, linear_damp_mode à DAMP_MODE_REPLACE à 0.0, angular_damp_mode à DAMP_MODE_REPLACE, et angular_damp à 0.0.


bool can_sleep = true 🔗

  • void set_can_sleep(value: bool)

  • bool is_able_to_sleep()

Si true, le corps est désactivé lorsqu'il n'y a pas de mouvement, ainsi il ne participera pas à la simulation jusqu'à ce qu'il soit réveillé par une force externe.


bool custom_integrator = false 🔗

  • void set_use_custom_integrator(value: bool)

  • bool is_using_custom_integrator()

Si true, l'intégration des forces standardes (comme la gravité ou l'amortissement) sera désactivée pour ce corps. En dehors de la réponse à la collision, le corps ne se déplacera que selon la méthode _integrate_forces(), si cette méthode virtuelle est surchargée.

Définir cette propriété appellera la méthode PhysicsServer3D.body_set_omit_force_integration() en interne.


float friction = 1.0 🔗

  • void set_friction(value: float)

  • float get_friction()

La friction du corps, de 0 (sans friction) à 1 (friction maximale).


float gravity_scale = 1.0 🔗

  • void set_gravity_scale(value: float)

  • float get_gravity_scale()

Ceci est multiplié par ProjectSettings.physics/3d/default_gravity pour produire la gravité de ce corps. Par exemple, une valeur de 1.0 appliquera la gravité normale, 2.0 appliquera le double de la gravité, et 0.5 appliquera la moitié de la gravité à ce corps.


Transform3D joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗

Définit la transformation de l'articulation.


Vector3 joint_rotation = Vector3(0, 0, 0) 🔗

  • void set_joint_rotation(value: Vector3)

  • Vector3 get_joint_rotation()

Définit la rotation de la liaison en radians.


JointType joint_type = 0 🔗

Définit le type de liaison.


float linear_damp = 0.0 🔗

  • void set_linear_damp(value: float)

  • float get_linear_damp()

Amortit le mouvement du corps. Par défaut, le corps utilisera ProjectSettings.physics/3d/default_linear_damp ou toute redéfinition de valeur définie par une Area3D où se trouve le corps. Selon linear_damp_mode, linear_damp peut être ajouté ou remplacer la valeur d'amortissement du corps.

Voir ProjectSettings.physics/3d/default_linear_damp pour plus de détails sur l'amortissement.


DampMode linear_damp_mode = 0 🔗

Définit comment linear_damp est appliqué.


Vector3 linear_velocity = Vector3(0, 0, 0) 🔗

  • void set_linear_velocity(value: Vector3)

  • Vector3 get_linear_velocity()

La vitesse linéaire du corps en unités par seconde. Peut être utilisé sporadiquement, mais ne pas définir à chaque trame, car la physique peut s'exécuter dans un autre fil d'exécution et s'exécute à une granularité différente. Utilisez _integrate_forces() comme boucle de traitement pour un contrôle précis de l'état du corps.


float mass = 1.0 🔗

La masse du corps.


Descriptions des méthodes

void _integrate_forces(state: PhysicsDirectBodyState3D) virtual 🔗

Appelé pendant le traitement physique, vous permettant de lire et de modifier en toute sécurité l'état de simulation de l'objet. Par défaut, elle est appelée avant l'intégration des forces standardes, mais la propriété custom_integrator vous permet de désactiver l'intégration des forces standardes et de faire une intégration des forces entièrement personnalisée pour un corps.


void apply_central_impulse(impulse: Vector3) 🔗

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 "_integrate_forces" sinon).

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


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

Applique une impulsion positionnelle au PhysicalBone3D.

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 "_integrate_forces" sinon).

position est le décalage depuis l'origine du PhysicalBone3D en coordonnées globales.


int get_bone_id() const 🔗

Renvoie l'identifiant unique du PhysicalBone3D.


bool get_simulate_physics() 🔗

Renvoie true si le PhysicalBone3D est autorisé à simuler la physique.


bool is_simulating_physics() 🔗

Renvoie true si le PhysicalBone3D simule actuellement la physique.