Inheritance #
- AudioServer
- CameraServer
- ClassDB
- DisplayServer
- EditorFileSystemDirectory
- EditorInterface
- EditorPaths
- EditorSelection
- EditorUndoRedoManager
- EditorVCSInterface
- Engine
- EngineDebugger
- FramebufferCacheRD
- GDExtensionManager
- Geometry2D
- Geometry3D
- IP
- Input
- InputMap
- JNISingleton
- JSONRPC
- JavaClassWrapper
- JavaScriptBridge
- MainLoop (1)
- Marshalls
- MovieWriter
- NativeMenu
- NavigationMeshGenerator
- NavigationServer2D
- NavigationServer3D
- Node (21)
- OS
- OpenXRExtensionWrapperExtension
- OpenXRInteractionProfileMetadata
- Performance
- PhysicsDirectBodyState2D (1)
- PhysicsDirectBodyState3D (1)
- PhysicsDirectSpaceState2D (1)
- PhysicsDirectSpaceState3D (1)
- PhysicsServer2D (1)
- PhysicsServer2DManager
- PhysicsServer3D (1)
- PhysicsServer3DManager
- PhysicsServer3DRendering
ServerHandler
- ProjectSettings
- RefCounted (121)
- RenderData (2)
- RenderSceneData (2)
- RenderingDevice
- RenderingServer
- ResourceLoader
- ResourceSaver
- ResourceUID
- ScriptLanguage (1)
- ShaderIncludeDB
- TextServerManager
- ThemeDB
- TileData
- Time
- TranslationServer
- TreeItem
- UndoRedo
- UniformSetCacheRD
- WorkerThreadPool
- XRServer
- XRVRS
- AnimationMixer (2)
- AudioStreamPlayer
- CanvasItem (2)
- CanvasLayer (1)
- EditorFileSystem
- EditorPlugin (1)
- EditorResourcePreview
- HTTPRequest
- InstancePlaceholder
- MissingNode
- MultiplayerSpawner
- MultiplayerSynchronizer
- NavigationAgent2D
- NavigationAgent3D
- Node3D (31)
- ResourcePreloader
- ShaderGlobalsOverride
- StatusIndicator
- Timer
- Viewport (2)
- WorldEnvironment
- AudioListener3D
- AudioStreamPlayer3D
- BoneAttachment3D
- Camera3D (1)
- CollisionObject3D (2)
- CollisionPolygon3D
- CollisionShape3D
- GridMap
- ImporterMeshInstance3D
- Joint3D (5)
- LightmapProbe
- Marker3D
- NavigationLink3D
- NavigationObstacle3D
- NavigationRegion3D
- OpenXRCompositionLayer (3)
- OpenXRHand
- Path3D
- PathFollow3D
- RayCast3D
- RemoteTransform3D
- ShapeCast3D
- Skeleton3D
- SkeletonModifier3D (7)
- SpringArm3D
- SpringBoneCollision3D (3)
- VehicleWheel3D
- VisualInstance3D (13)
- XRFaceModifier3D
- XRNode3D (2)
- XROrigin3D
Table of contents
-
var angular_damp: float = 0.0 -
var angular_damp_mode = DAMP_MODE_COMBINE -
var angular_velocity: Vector3 = Vector3(0, 0, 0) -
var body_offset: Transform3D = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) -
var bounce: float = 0.0 -
var can_sleep: bool = true -
var custom_integrator: bool = false -
var friction: float = 1.0 -
var gravity_scale: float = 1.0 -
var joint_offset: Transform3D = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) -
var joint_rotation: Vector3 = Vector3(0, 0, 0) -
var joint_type = JOINT_TYPE_NONE -
var linear_damp: float = 0.0 -
var linear_damp_mode = DAMP_MODE_COMBINE -
var linear_velocity: Vector3 = Vector3(0, 0, 0) -
var mass: float = 1.0 -
virtual func _integrate_forces(state: PhysicsDirectBodyState3D) -> void -
func apply_central_impulse(impulse: Vector3) -> void -
func apply_impulse(position: Vector3 = Vector3(0, 0, 0)) -> void -
const func get_bone_id() -> int -
func get_simulate_physics() -> bool -
func is_simulating_physics() -> bool -
const DAMP_MODE_COMBINE = 0 enum DampMode -
const DAMP_MODE_REPLACE = 1 enum DampMode -
const JOINT_TYPE_NONE = 0 enum JointType -
const JOINT_TYPE_PIN = 1 enum JointType -
const JOINT_TYPE_CONE = 2 enum JointType -
const JOINT_TYPE_HINGE = 3 enum JointType -
const JOINT_TYPE_SLIDER = 4 enum JointType -
const JOINT_TYPE_6DOF = 5 enum JointType -
enum DampMode -
enum JointType
PhysicalBone3D #
is_instantiable, Node3D, Node, core, not_builtin_classes
A physics body used to make bones in a Skeleton3D react to physics.
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).
Members #
var angular_damp: float = 0.0#
Damps the body's rotation. By default, the body will use the ProjectSettings.physics/3d/default_angular_damp project setting 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.
var angular_damp_mode = DAMP_MODE_COMBINE#
Defines how angular_damp is applied. See DampMode for possible values.
var angular_velocity: Vector3 = Vector3(0, 0, 0)#
The PhysicalBone3D's rotational velocity in radians per second.
var body_offset: Transform3D = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)#
Sets the body's transform.
var bounce: float = 0.0#
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.
var can_sleep: bool = 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.
var custom_integrator: bool = 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.
var friction: float = 1.0#
The body's friction, from 0 (frictionless) to 1 (max friction).
var gravity_scale: float = 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.
var joint_offset: Transform3D = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)#
Sets the joint's transform.
var joint_rotation: Vector3 = Vector3(0, 0, 0)#
Sets the joint's rotation in radians.
var joint_type = JOINT_TYPE_NONE#
Sets the joint type. See JointType for possible values.
var linear_damp: float = 0.0#
Damps the body's movement. By default, the body will use ProjectSettings.physics/3d/default_linear_damp or any value override set by an Area3D the body is in. Depending on linear_damp_mode, linear_damp may be added to or replace the body's damping value.
See ProjectSettings.physics/3d/default_linear_damp for more details about damping.
var linear_damp_mode = DAMP_MODE_COMBINE#
Defines how linear_damp is applied. See DampMode for possible values.
var linear_velocity: Vector3 = 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.
var mass: float = 1.0#
The body's mass.
Methods #
virtual func _integrate_forces(state: PhysicsDirectBodyState3D) -> void#
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.
func apply_central_impulse(impulse: Vector3) -> void#
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.
func apply_impulse(position: Vector3 = Vector3(0, 0, 0)) -> void#
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.
const func get_bone_id() -> int#
Returns the unique identifier of the PhysicsBone3D.
func get_simulate_physics() -> bool#
Returns true if the PhysicsBone3D is allowed to simulate physics.
func is_simulating_physics() -> bool#
Returns true if the PhysicsBone3D is currently simulating physics.
Annotations #
Constants #
const 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.
const DAMP_MODE_REPLACE = 1 enum DampMode#
In this mode, the body's damping value replaces any value set in areas or the default value.
const JOINT_TYPE_NONE = 0 enum JointType#
No joint is applied to the PhysicsBone3D.
const JOINT_TYPE_PIN = 1 enum JointType#
A pin joint is applied to the PhysicsBone3D.
const JOINT_TYPE_CONE = 2 enum JointType#
A cone joint is applied to the PhysicsBone3D.
const JOINT_TYPE_HINGE = 3 enum JointType#
A hinge joint is applied to the PhysicsBone3D.
const JOINT_TYPE_SLIDER = 4 enum JointType#
A slider joint is applied to the PhysicsBone3D.
const JOINT_TYPE_6DOF = 5 enum JointType#
A 6 degrees of freedom joint is applied to the PhysicsBone3D.
Constructors #
Enums #
DampMode#
enum DampMode {
DAMP_MODE_COMBINE = 0,
DAMP_MODE_REPLACE = 1,
}JointType#
enum JointType {
JOINT_TYPE_NONE = 0,
JOINT_TYPE_PIN = 1,
JOINT_TYPE_CONE = 2,
JOINT_TYPE_HINGE = 3,
JOINT_TYPE_SLIDER = 4,
JOINT_TYPE_6DOF = 5,
}