:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/4.1/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/4.1/doc/classes/PhysicalBone3D.xml. .. _class_PhysicalBone3D: PhysicalBone3D ============== **Inherits:** :ref:`PhysicsBody3D` **<** :ref:`CollisionObject3D` **<** :ref:`Node3D` **<** :ref:`Node` **<** :ref:`Object` A physics body used to make bones in a :ref:`Skeleton3D` react to physics. .. rst-class:: classref-introduction-group Description ----------- The **PhysicalBone3D** node is a physics body that can be used to make bones in a :ref:`Skeleton3D` react to physics. .. rst-class:: classref-reftable-group Properties ---------- .. table:: :widths: auto +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`float` | :ref:`angular_damp` | ``0.0`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`DampMode` | :ref:`angular_damp_mode` | ``0`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`Vector3` | :ref:`angular_velocity` | ``Vector3(0, 0, 0)`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`Transform3D` | :ref:`body_offset` | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`float` | :ref:`bounce` | ``0.0`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`bool` | :ref:`can_sleep` | ``true`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`bool` | :ref:`custom_integrator` | ``false`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`float` | :ref:`friction` | ``1.0`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`float` | :ref:`gravity_scale` | ``1.0`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`Transform3D` | :ref:`joint_offset` | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`Vector3` | :ref:`joint_rotation` | ``Vector3(0, 0, 0)`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`JointType` | :ref:`joint_type` | ``0`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`float` | :ref:`linear_damp` | ``0.0`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`DampMode` | :ref:`linear_damp_mode` | ``0`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`Vector3` | :ref:`linear_velocity` | ``Vector3(0, 0, 0)`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ | :ref:`float` | :ref:`mass` | ``1.0`` | +-------------------------------------------------+---------------------------------------------------------------------------+-----------------------------------------------------+ .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`_integrate_forces` **(** :ref:`PhysicsDirectBodyState3D` state **)** |virtual| | +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`apply_central_impulse` **(** :ref:`Vector3` impulse **)** | +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`apply_impulse` **(** :ref:`Vector3` impulse, :ref:`Vector3` position=Vector3(0, 0, 0) **)** | +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_bone_id` **(** **)** |const| | +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_simulate_physics` **(** **)** | +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_simulating_physics` **(** **)** | +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Enumerations ------------ .. _enum_PhysicalBone3D_DampMode: .. rst-class:: classref-enumeration enum **DampMode**: .. _class_PhysicalBone3D_constant_DAMP_MODE_COMBINE: .. rst-class:: classref-enumeration-constant :ref:`DampMode` **DAMP_MODE_COMBINE** = ``0`` In this mode, the body's damping value is added to any value set in areas or the default value. .. _class_PhysicalBone3D_constant_DAMP_MODE_REPLACE: .. rst-class:: classref-enumeration-constant :ref:`DampMode` **DAMP_MODE_REPLACE** = ``1`` In this mode, the body's damping value replaces any value set in areas or the default value. .. rst-class:: classref-item-separator ---- .. _enum_PhysicalBone3D_JointType: .. rst-class:: classref-enumeration enum **JointType**: .. _class_PhysicalBone3D_constant_JOINT_TYPE_NONE: .. rst-class:: classref-enumeration-constant :ref:`JointType` **JOINT_TYPE_NONE** = ``0`` .. _class_PhysicalBone3D_constant_JOINT_TYPE_PIN: .. rst-class:: classref-enumeration-constant :ref:`JointType` **JOINT_TYPE_PIN** = ``1`` .. _class_PhysicalBone3D_constant_JOINT_TYPE_CONE: .. rst-class:: classref-enumeration-constant :ref:`JointType` **JOINT_TYPE_CONE** = ``2`` .. _class_PhysicalBone3D_constant_JOINT_TYPE_HINGE: .. rst-class:: classref-enumeration-constant :ref:`JointType` **JOINT_TYPE_HINGE** = ``3`` .. _class_PhysicalBone3D_constant_JOINT_TYPE_SLIDER: .. rst-class:: classref-enumeration-constant :ref:`JointType` **JOINT_TYPE_SLIDER** = ``4`` .. _class_PhysicalBone3D_constant_JOINT_TYPE_6DOF: .. rst-class:: classref-enumeration-constant :ref:`JointType` **JOINT_TYPE_6DOF** = ``5`` .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Property Descriptions --------------------- .. _class_PhysicalBone3D_property_angular_damp: .. rst-class:: classref-property :ref:`float` **angular_damp** = ``0.0`` .. rst-class:: classref-property-setget - void **set_angular_damp** **(** :ref:`float` value **)** - :ref:`float` **get_angular_damp** **(** **)** Damps the body's rotation. By default, the body will use the **Default Angular Damp** in **Project > Project Settings > Physics > 3d** or any value override set by an :ref:`Area3D` the body is in. Depending on :ref:`angular_damp_mode`, you can set :ref:`angular_damp` to be added to or to replace the body's damping value. See :ref:`ProjectSettings.physics/3d/default_angular_damp` for more details about damping. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_angular_damp_mode: .. rst-class:: classref-property :ref:`DampMode` **angular_damp_mode** = ``0`` .. rst-class:: classref-property-setget - void **set_angular_damp_mode** **(** :ref:`DampMode` value **)** - :ref:`DampMode` **get_angular_damp_mode** **(** **)** Defines how :ref:`angular_damp` is applied. See :ref:`DampMode` for possible values. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_angular_velocity: .. rst-class:: classref-property :ref:`Vector3` **angular_velocity** = ``Vector3(0, 0, 0)`` .. rst-class:: classref-property-setget - void **set_angular_velocity** **(** :ref:`Vector3` value **)** - :ref:`Vector3` **get_angular_velocity** **(** **)** The PhysicalBone3D's rotational velocity in *radians* per second. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_body_offset: .. rst-class:: classref-property :ref:`Transform3D` **body_offset** = ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` .. rst-class:: classref-property-setget - void **set_body_offset** **(** :ref:`Transform3D` value **)** - :ref:`Transform3D` **get_body_offset** **(** **)** Sets the body's transform. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_bounce: .. rst-class:: classref-property :ref:`float` **bounce** = ``0.0`` .. rst-class:: classref-property-setget - void **set_bounce** **(** :ref:`float` value **)** - :ref:`float` **get_bounce** **(** **)** The body's bounciness. Values range from ``0`` (no bounce) to ``1`` (full bounciness). \ **Note:** Even with :ref:`bounce` set to ``1.0``, some energy will be lost over time due to linear and angular damping. To have a **PhysicalBone3D** that preserves all its energy over time, set :ref:`bounce` to ``1.0``, :ref:`linear_damp_mode` to :ref:`DAMP_MODE_REPLACE`, :ref:`linear_damp` to ``0.0``, :ref:`angular_damp_mode` to :ref:`DAMP_MODE_REPLACE`, and :ref:`angular_damp` to ``0.0``. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_can_sleep: .. rst-class:: classref-property :ref:`bool` **can_sleep** = ``true`` .. rst-class:: classref-property-setget - void **set_can_sleep** **(** :ref:`bool` value **)** - :ref:`bool` **is_able_to_sleep** **(** **)** If ``true``, the body is deactivated when there is no movement, so it will not take part in the simulation until it is awakened by an external force. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_custom_integrator: .. rst-class:: classref-property :ref:`bool` **custom_integrator** = ``false`` .. rst-class:: classref-property-setget - void **set_use_custom_integrator** **(** :ref:`bool` value **)** - :ref:`bool` **is_using_custom_integrator** **(** **)** If ``true``, internal force integration will be disabled (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the :ref:`_integrate_forces` function, if defined. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_friction: .. rst-class:: classref-property :ref:`float` **friction** = ``1.0`` .. rst-class:: classref-property-setget - void **set_friction** **(** :ref:`float` value **)** - :ref:`float` **get_friction** **(** **)** The body's friction, from ``0`` (frictionless) to ``1`` (max friction). .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_gravity_scale: .. rst-class:: classref-property :ref:`float` **gravity_scale** = ``1.0`` .. rst-class:: classref-property-setget - void **set_gravity_scale** **(** :ref:`float` value **)** - :ref:`float` **get_gravity_scale** **(** **)** This is multiplied by the global 3D gravity setting found in **Project > Project Settings > Physics > 3d** to produce the body's gravity. For example, a value of 1 will be normal gravity, 2 will apply double gravity, and 0.5 will apply half gravity to this object. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_joint_offset: .. rst-class:: classref-property :ref:`Transform3D` **joint_offset** = ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` .. rst-class:: classref-property-setget - void **set_joint_offset** **(** :ref:`Transform3D` value **)** - :ref:`Transform3D` **get_joint_offset** **(** **)** Sets the joint's transform. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_joint_rotation: .. rst-class:: classref-property :ref:`Vector3` **joint_rotation** = ``Vector3(0, 0, 0)`` .. rst-class:: classref-property-setget - void **set_joint_rotation** **(** :ref:`Vector3` value **)** - :ref:`Vector3` **get_joint_rotation** **(** **)** Sets the joint's rotation in radians. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_joint_type: .. rst-class:: classref-property :ref:`JointType` **joint_type** = ``0`` .. rst-class:: classref-property-setget - void **set_joint_type** **(** :ref:`JointType` value **)** - :ref:`JointType` **get_joint_type** **(** **)** Sets the joint type. See :ref:`JointType` for possible values. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_linear_damp: .. rst-class:: classref-property :ref:`float` **linear_damp** = ``0.0`` .. rst-class:: classref-property-setget - void **set_linear_damp** **(** :ref:`float` value **)** - :ref:`float` **get_linear_damp** **(** **)** Damps the body's movement. By default, the body will use the **Default Linear Damp** in **Project > Project Settings > Physics > 3d** or any value override set by an :ref:`Area3D` the body is in. Depending on :ref:`linear_damp_mode`, you can set :ref:`linear_damp` to be added to or to replace the body's damping value. See :ref:`ProjectSettings.physics/3d/default_linear_damp` for more details about damping. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_linear_damp_mode: .. rst-class:: classref-property :ref:`DampMode` **linear_damp_mode** = ``0`` .. rst-class:: classref-property-setget - void **set_linear_damp_mode** **(** :ref:`DampMode` value **)** - :ref:`DampMode` **get_linear_damp_mode** **(** **)** Defines how :ref:`linear_damp` is applied. See :ref:`DampMode` for possible values. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_linear_velocity: .. rst-class:: classref-property :ref:`Vector3` **linear_velocity** = ``Vector3(0, 0, 0)`` .. rst-class:: classref-property-setget - void **set_linear_velocity** **(** :ref:`Vector3` value **)** - :ref:`Vector3` **get_linear_velocity** **(** **)** The body's linear velocity in units per second. Can be used sporadically, but **don't set this every frame**, because physics may run in another thread and runs at a different granularity. Use :ref:`_integrate_forces` as your process loop for precise control of the body state. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_property_mass: .. rst-class:: classref-property :ref:`float` **mass** = ``1.0`` .. rst-class:: classref-property-setget - void **set_mass** **(** :ref:`float` value **)** - :ref:`float` **get_mass** **(** **)** The body's mass. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_PhysicalBone3D_method__integrate_forces: .. rst-class:: classref-method void **_integrate_forces** **(** :ref:`PhysicsDirectBodyState3D` state **)** |virtual| Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it works in addition to the usual physics behavior, but the :ref:`custom_integrator` property allows you to disable the default behavior and do fully custom force integration for a body. .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_method_apply_central_impulse: .. rst-class:: classref-method void **apply_central_impulse** **(** :ref:`Vector3` impulse **)** .. container:: contribute There is currently no description for this method. Please help us by :ref:`contributing one `! .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_method_apply_impulse: .. rst-class:: classref-method void **apply_impulse** **(** :ref:`Vector3` impulse, :ref:`Vector3` position=Vector3(0, 0, 0) **)** .. container:: contribute There is currently no description for this method. Please help us by :ref:`contributing one `! .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_method_get_bone_id: .. rst-class:: classref-method :ref:`int` **get_bone_id** **(** **)** |const| .. container:: contribute There is currently no description for this method. Please help us by :ref:`contributing one `! .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_method_get_simulate_physics: .. rst-class:: classref-method :ref:`bool` **get_simulate_physics** **(** **)** .. container:: contribute There is currently no description for this method. Please help us by :ref:`contributing one `! .. rst-class:: classref-item-separator ---- .. _class_PhysicalBone3D_method_is_simulating_physics: .. rst-class:: classref-method :ref:`bool` **is_simulating_physics** **(** **)** .. container:: contribute There is currently no description for this method. Please help us by :ref:`contributing one `! .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`