Class reference

PhysicalBone3D

Inherits PhysicsBody3D

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

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)

Sets the body's transform.

bool can_sleep = true

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.

float friction = 1.0

The body's friction, from 0 (frictionless) to 1 (max friction).

float gravity_scale = 1.0

This is multiplied by ProjectSettings.physics/3d/default_gravity to produce this body's gravity. For example, a value of 1.0 will apply normal gravity, 2.0 will apply double the gravity, and 0.5 will apply half the gravity to this body.

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

Sets the joint's transform.

Vector3 joint_rotation = Vector3(0, 0, 0)

Sets the joint's rotation in radians.

int joint_type = 0

Sets the joint type.

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.

float mass = 1.0

The body's mass.

Methods

void _integrate_forces(PhysicsDirectBodyState3D state) 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(Vector3 impulse)

Applies a directional impulse without affecting rotation. An impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the "_integrate_forces" functions otherwise). This is equivalent to using apply_impulse() at the body's center of mass.

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

Applies a positioned impulse to the PhysicsBone3D. An impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the "_integrate_forces" functions otherwise). position is the offset from the PhysicsBone3D origin in global coordinates.

int get_bone_id() const

Returns the unique identifier of the PhysicsBone3D.

bool get_simulate_physics()

Returns true if the PhysicsBone3D is allowed to simulate physics.

bool is_simulating_physics()

Returns true if the PhysicsBone3D is currently simulating physics.

Constants

DAMP_MODE_COMBINE = 0

Enum: DampMode

In this mode, the body's damping value is added to any value set in areas or the default value.

DAMP_MODE_REPLACE = 1

Enum: DampMode

In this mode, the body's damping value replaces any value set in areas or the default value.

JOINT_TYPE_NONE = 0

Enum: JointType

No joint is applied to the PhysicsBone3D.

JOINT_TYPE_PIN = 1

Enum: JointType

A pin joint is applied to the PhysicsBone3D.

JOINT_TYPE_CONE = 2

Enum: JointType

A cone joint is applied to the PhysicsBone3D.

JOINT_TYPE_HINGE = 3

Enum: JointType

A hinge joint is applied to the PhysicsBone3D.

JOINT_TYPE_SLIDER = 4

Enum: JointType

A slider joint is applied to the PhysicsBone3D.

JOINT_TYPE_6DOF = 5

Enum: JointType

A 6 degrees of freedom joint is applied to the PhysicsBone3D.

Source revision 5592dc3a7a61
Connection interrupted. Reload×

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.