PhysicalBone3D
Inherits: PhysicsBody3D < CollisionObject3D < Node3D < Node < Object
A physics body used to make bones in a Skeleton3D react to physics.
Description
The PhysicalBone3D node is a physics body that can be used to make bones in a Skeleton3D react to physics.
Note: In order to detect physical bones with raycasts, the SkeletonModifier3D.active property of the parent PhysicalBoneSimulator3D must be true
and the Skeleton3D‘s bone must be assigned to PhysicalBone3D correctly; it means that get_bone_id should return a valid id (>= 0
).
Properties
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
Methods
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 | |
Enumerations
enum DampMode: 🔗
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.
DampMode DAMP_MODE_REPLACE = 1
In this mode, the body’s damping value replaces any value set in areas or the default value.
enum JointType: 🔗
JointType JOINT_TYPE_NONE = 0
There is currently no description for this enum. Please help us by contributing one!
JointType JOINT_TYPE_PIN = 1
There is currently no description for this enum. Please help us by contributing one!
JointType JOINT_TYPE_CONE = 2
There is currently no description for this enum. Please help us by contributing one!
JointType JOINT_TYPE_HINGE = 3
There is currently no description for this enum. Please help us by contributing one!
JointType JOINT_TYPE_SLIDER = 4
There is currently no description for this enum. Please help us by contributing one!
JointType JOINT_TYPE_6DOF = 5
There is currently no description for this enum. Please help us by contributing one!
Property Descriptions
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 Area3D the body is in. Depending on angular_damp_mode, you can set angular_damp to be added to or to replace the body’s damping value.
See ProjectSettings.physics/3d/default_angular_damp for more details about damping.
DampMode angular_damp_mode = 0
🔗
Defines how angular_damp is applied. See DampMode for possible values.
Vector3 angular_velocity = Vector3(0, 0, 0)
🔗
The PhysicalBone3D’s rotational velocity in radians per second.
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()
Sets the body’s transform.
The body’s bounciness. Values range from 0
(no bounce) to 1
(full bounciness).
Note: Even with 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 bounce to 1.0
, linear_damp_mode to DAMP_MODE_REPLACE, linear_damp to 0.0
, angular_damp_mode to DAMP_MODE_REPLACE, and angular_damp to 0.0
.
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.
bool custom_integrator = false
🔗
If true
, the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the _integrate_forces method, if that virtual method is overridden.
Setting this property will call the method PhysicsServer3D.body_set_omit_force_integration internally.
The body’s friction, from 0
(frictionless) to 1
(max friction).
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.
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()
Sets the joint’s transform.
Vector3 joint_rotation = Vector3(0, 0, 0)
🔗
Sets the joint’s rotation in radians.
Sets the joint type. See JointType for possible values.
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 Area3D the body is in. Depending on linear_damp_mode, you can set linear_damp to be added to or to replace the body’s damping value.
See ProjectSettings.physics/3d/default_linear_damp for more details about damping.
DampMode linear_damp_mode = 0
🔗
Defines how linear_damp is applied. See DampMode for possible values.
Vector3 linear_velocity = Vector3(0, 0, 0)
🔗
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 _integrate_forces as your process loop for precise control of the body state.
The body’s mass.
Method Descriptions
void _integrate_forces(state: PhysicsDirectBodyState3D) virtual 🔗
Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the custom_integrator property allows you to disable the standard force integration and do fully custom force integration for a body.
void apply_central_impulse(impulse: Vector3) 🔗
There is currently no description for this method. Please help us by contributing one!
void apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗
There is currently no description for this method. Please help us by contributing one!
There is currently no description for this method. Please help us by contributing one!
There is currently no description for this method. Please help us by contributing one!
bool is_simulating_physics() 🔗
There is currently no description for this method. Please help us by contributing one!
User-contributed notes
Please read the User-contributed notes policy before submitting a comment.