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...
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
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
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)) |
get_bone_id() const |
|
É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
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) 🔗
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) 🔗
void set_body_offset(value: Transform3D)
Transform3D get_body_offset()
Définit la transformation du corps.
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.
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 🔗
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.
La friction du corps, de 0 (sans friction) à 1 (friction maximale).
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) 🔗
void set_joint_offset(value: Transform3D)
Transform3D get_joint_offset()
Définit la transformation de l'articulation.
Vector3 joint_rotation = Vector3(0, 0, 0) 🔗
Définit la rotation de la liaison en radians.
Définit le type de liaison.
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) 🔗
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.
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.
Renvoie l'identifiant unique du PhysicalBone3D.
Renvoie true si le PhysicalBone3D est autorisé à simuler la physique.
bool is_simulating_physics() 🔗
Renvoie true si le PhysicalBone3D simule actuellement la physique.