Up to date

This page is up to date for Godot 4.1. If you still find outdated information, please open an issue.

PhysicsServer3D

Inherits: Object

Inherited By: PhysicsServer3DExtension

A server interface for low-level 3D physics access.

Description

PhysicsServer2D is the server responsible for all 2D physics. It can directly create and manipulate all physics objects:

  • A space is a self-contained world for a physics simulation. It contains bodies, areas, and joints. Its state can be queried for collision and intersection information, and several parameters of the simulation can be modified.

  • A shape is a geometric shape such as a sphere, a box, a cylinder, or a polygon. It can be used for collision detection by adding it to a body/area, possibly with an extra transformation relative to the body/area's origin. Bodies/areas can have multiple (transformed) shapes added to them, and a single shape can be added to bodies/areas multiple times with different local transformations.

  • A body is a physical object which can be in static, kinematic, or rigid mode. Its state (such as position and velocity) can be queried and updated. A force integration callback can be set to customize the body's physics.

  • An area is a region in space which can be used to detect bodies and areas entering and exiting it. A body monitoring callback can be set to report entering/exiting body shapes, and similarly an area monitoring callback can be set. Gravity and damping can be overridden within the area by setting area parameters.

  • A joint is a constraint, either between two bodies or on one body relative to a point. Parameters such as the joint bias and the rest length of a spring joint can be adjusted.

Physics objects in PhysicsServer3D may be created and manipulated independently; they do not have to be tied to nodes in the scene tree.

Note: All the 3D physics nodes use the physics server internally. Adding a physics node to the scene tree will cause a corresponding physics object to be created in the physics server. A rigid body node registers a callback that updates the node's transform with the transform of the respective body object in the physics server (every physics update). An area node registers a callback to inform the area node about overlaps with the respective area object in the physics server. The raycast node queries the direct state of the relevant space in the physics server.

Methods

void

area_add_shape ( RID area, RID shape, Transform3D transform=Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0), bool disabled=false )

void

area_attach_object_instance_id ( RID area, int id )

void

area_clear_shapes ( RID area )

RID

area_create ( )

int

area_get_collision_layer ( RID area ) const

int

area_get_collision_mask ( RID area ) const

int

area_get_object_instance_id ( RID area ) const

Variant

area_get_param ( RID area, AreaParameter param ) const

RID

area_get_shape ( RID area, int shape_idx ) const

int

area_get_shape_count ( RID area ) const

Transform3D

area_get_shape_transform ( RID area, int shape_idx ) const

RID

area_get_space ( RID area ) const

Transform3D

area_get_transform ( RID area ) const

void

area_remove_shape ( RID area, int shape_idx )

void

area_set_area_monitor_callback ( RID area, Callable callback )

void

area_set_collision_layer ( RID area, int layer )

void

area_set_collision_mask ( RID area, int mask )

void

area_set_monitor_callback ( RID area, Callable callback )

void

area_set_monitorable ( RID area, bool monitorable )

void

area_set_param ( RID area, AreaParameter param, Variant value )

void

area_set_ray_pickable ( RID area, bool enable )

void

area_set_shape ( RID area, int shape_idx, RID shape )

void

area_set_shape_disabled ( RID area, int shape_idx, bool disabled )

void

area_set_shape_transform ( RID area, int shape_idx, Transform3D transform )

void

area_set_space ( RID area, RID space )

void

area_set_transform ( RID area, Transform3D transform )

void

body_add_collision_exception ( RID body, RID excepted_body )

void

body_add_constant_central_force ( RID body, Vector3 force )

void

body_add_constant_force ( RID body, Vector3 force, Vector3 position=Vector3(0, 0, 0) )

void

body_add_constant_torque ( RID body, Vector3 torque )

void

body_add_shape ( RID body, RID shape, Transform3D transform=Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0), bool disabled=false )

void

body_apply_central_force ( RID body, Vector3 force )

void

body_apply_central_impulse ( RID body, Vector3 impulse )

void

body_apply_force ( RID body, Vector3 force, Vector3 position=Vector3(0, 0, 0) )

void

body_apply_impulse ( RID body, Vector3 impulse, Vector3 position=Vector3(0, 0, 0) )

void

body_apply_torque ( RID body, Vector3 torque )

void

body_apply_torque_impulse ( RID body, Vector3 impulse )

void

body_attach_object_instance_id ( RID body, int id )

void

body_clear_shapes ( RID body )

RID

body_create ( )

int

body_get_collision_layer ( RID body ) const

int

body_get_collision_mask ( RID body ) const

float

body_get_collision_priority ( RID body ) const

Vector3

body_get_constant_force ( RID body ) const

Vector3

body_get_constant_torque ( RID body ) const

PhysicsDirectBodyState3D

body_get_direct_state ( RID body )

int

body_get_max_contacts_reported ( RID body ) const

BodyMode

body_get_mode ( RID body ) const

int

body_get_object_instance_id ( RID body ) const

Variant

body_get_param ( RID body, BodyParameter param ) const

RID

body_get_shape ( RID body, int shape_idx ) const

int

body_get_shape_count ( RID body ) const

Transform3D

body_get_shape_transform ( RID body, int shape_idx ) const

RID

body_get_space ( RID body ) const

Variant

body_get_state ( RID body, BodyState state ) const

bool

body_is_axis_locked ( RID body, BodyAxis axis ) const

bool

body_is_continuous_collision_detection_enabled ( RID body ) const

bool

body_is_omitting_force_integration ( RID body ) const

void

body_remove_collision_exception ( RID body, RID excepted_body )

void

body_remove_shape ( RID body, int shape_idx )

void

body_reset_mass_properties ( RID body )

void

body_set_axis_lock ( RID body, BodyAxis axis, bool lock )

void

body_set_axis_velocity ( RID body, Vector3 axis_velocity )

void

body_set_collision_layer ( RID body, int layer )

void

body_set_collision_mask ( RID body, int mask )

void

body_set_collision_priority ( RID body, float priority )

void

body_set_constant_force ( RID body, Vector3 force )

void

body_set_constant_torque ( RID body, Vector3 torque )

void

body_set_enable_continuous_collision_detection ( RID body, bool enable )

void

body_set_force_integration_callback ( RID body, Callable callable, Variant userdata=null )

void

body_set_max_contacts_reported ( RID body, int amount )

void

body_set_mode ( RID body, BodyMode mode )

void

body_set_omit_force_integration ( RID body, bool enable )

void

body_set_param ( RID body, BodyParameter param, Variant value )

void

body_set_ray_pickable ( RID body, bool enable )

void

body_set_shape ( RID body, int shape_idx, RID shape )

void

body_set_shape_disabled ( RID body, int shape_idx, bool disabled )

void

body_set_shape_transform ( RID body, int shape_idx, Transform3D transform )

void

body_set_space ( RID body, RID space )

void

body_set_state ( RID body, BodyState state, Variant value )

bool

body_test_motion ( RID body, PhysicsTestMotionParameters3D parameters, PhysicsTestMotionResult3D result=null )

RID

box_shape_create ( )

RID

capsule_shape_create ( )

RID

concave_polygon_shape_create ( )

float

cone_twist_joint_get_param ( RID joint, ConeTwistJointParam param ) const

void

cone_twist_joint_set_param ( RID joint, ConeTwistJointParam param, float value )

RID

convex_polygon_shape_create ( )

RID

custom_shape_create ( )

RID

cylinder_shape_create ( )

void

free_rid ( RID rid )

bool

generic_6dof_joint_get_flag ( RID joint, Vector3.Axis axis, G6DOFJointAxisFlag flag ) const

float

generic_6dof_joint_get_param ( RID joint, Vector3.Axis axis, G6DOFJointAxisParam param ) const

void

generic_6dof_joint_set_flag ( RID joint, Vector3.Axis axis, G6DOFJointAxisFlag flag, bool enable )

void

generic_6dof_joint_set_param ( RID joint, Vector3.Axis axis, G6DOFJointAxisParam param, float value )

int

get_process_info ( ProcessInfo process_info )

RID

heightmap_shape_create ( )

bool

hinge_joint_get_flag ( RID joint, HingeJointFlag flag ) const

float

hinge_joint_get_param ( RID joint, HingeJointParam param ) const

void

hinge_joint_set_flag ( RID joint, HingeJointFlag flag, bool enabled )

void

hinge_joint_set_param ( RID joint, HingeJointParam param, float value )

void

joint_clear ( RID joint )

RID

joint_create ( )

void

joint_disable_collisions_between_bodies ( RID joint, bool disable )

int

joint_get_solver_priority ( RID joint ) const

JointType

joint_get_type ( RID joint ) const

bool

joint_is_disabled_collisions_between_bodies ( RID joint ) const

void

joint_make_cone_twist ( RID joint, RID body_A, Transform3D local_ref_A, RID body_B, Transform3D local_ref_B )

void

joint_make_generic_6dof ( RID joint, RID body_A, Transform3D local_ref_A, RID body_B, Transform3D local_ref_B )

void

joint_make_hinge ( RID joint, RID body_A, Transform3D hinge_A, RID body_B, Transform3D hinge_B )

void

joint_make_pin ( RID joint, RID body_A, Vector3 local_A, RID body_B, Vector3 local_B )

void

joint_make_slider ( RID joint, RID body_A, Transform3D local_ref_A, RID body_B, Transform3D local_ref_B )

void

joint_set_solver_priority ( RID joint, int priority )

Vector3

pin_joint_get_local_a ( RID joint ) const