PhysicsServer

Inherits: Object

用于低级物理访问的服务器接口。

描述

PhysicsServer是负责所有3D物理的服务。它可以创建许多种类的物理对象,但不会在节点树上插入这些对象。

方法

void

area_add_shape ( RID area, RID shape, Transform transform=Transform( 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_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

Transform

area_get_shape_transform ( RID area, int shape_idx ) const

RID

area_get_space ( RID area ) const

AreaSpaceOverrideMode

area_get_space_override_mode ( RID area ) const

Transform

area_get_transform ( RID area ) const

bool

area_is_ray_pickable ( RID area ) const

void

area_remove_shape ( RID area, int shape_idx )

void

area_set_area_monitor_callback ( RID area, Object receiver, String method )

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, Object receiver, String method )

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, Transform transform )

void

area_set_space ( RID area, RID space )

void

area_set_space_override_mode ( RID area, AreaSpaceOverrideMode mode )

void

area_set_transform ( RID area, Transform transform )

void

body_add_central_force ( RID body, Vector3 force )

void

body_add_collision_exception ( RID body, RID excepted_body )

void

body_add_force ( RID body, Vector3 force, Vector3 position )

void

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

void

body_add_torque ( RID body, Vector3 torque )

void

body_apply_central_impulse ( RID body, Vector3 impulse )

void

body_apply_impulse ( RID body, Vector3 position, Vector3 impulse )

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 ( BodyMode mode=2, bool init_sleeping=false )

int

body_get_collision_layer ( RID body ) const

int

body_get_collision_mask ( RID body ) const

PhysicsDirectBodyState

body_get_direct_state ( RID body )

float

body_get_kinematic_safe_margin ( RID body ) const

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

float

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

Transform

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

bool

body_is_ray_pickable ( RID body ) const

void

body_remove_collision_exception ( RID body, RID excepted_body )

void

body_remove_shape ( RID body, int shape_idx )

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_enable_continuous_collision_detection ( RID body, bool enable )

void

body_set_force_integration_callback ( RID body, Object receiver, String method, Variant userdata=null )

void

body_set_kinematic_safe_margin ( RID body, float margin )

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, float 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, Transform 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, Transform from, Vector3 motion, bool infinite_inertia, PhysicsTestMotionResult result=null, bool exclude_raycast_shapes=true, Array exclude=[ ] )

float

cone_twist_joint_get_param ( RID joint, ConeTwistJointParam param ) const

void

cone_twist_joint_set_param ( RID joint, ConeTwistJointParam param, float value )

void

free_rid ( RID rid )

bool

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

float

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

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 )

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 )

RID

joint_create_cone_twist ( RID body_A, Transform local_ref_A, RID body_B, Transform local_ref_B )

RID

joint_create_generic_6dof ( RID body_A, Transform local_ref_A, RID body_B, Transform local_ref_B )

RID

joint_create_hinge ( RID body_A, Transform hinge_A, RID body_B, Transform hinge_B )

RID

joint_create_pin ( RID body_A, Vector3 local_A, RID body_B, Vector3 local_B )

RID

joint_create_slider ( RID body_A, Transform local_ref_A, RID body_B, Transform local_ref_B )

int

joint_get_solver_priority ( RID joint ) const

JointType

joint_get_type ( RID joint ) const

void

joint_set_solver_priority ( RID joint, int priority )

Vector3

pin_joint_get_local_a ( RID joint ) const

Vector3

pin_joint_get_local_b ( RID joint ) const

float

pin_joint_get_param ( RID joint, PinJointParam param ) const

void

pin_joint_set_local_a ( RID joint, Vector3 local_A )

void

pin_joint_set_local_b ( RID joint, Vector3 local_B )

void

pin_joint_set_param ( RID joint, PinJointParam param, float value )

void

set_active ( bool active )

void

set_collision_iterations ( int iterations )

RID

shape_create ( ShapeType type )

Variant

shape_get_data ( RID shape ) const

ShapeType

shape_get_type ( RID shape ) const

void

shape_set_data ( RID shape, Variant data )

float

slider_joint_get_param ( RID joint, SliderJointParam param ) const

void

slider_joint_set_param ( RID joint, SliderJointParam param, float value )

RID

space_create ( )

PhysicsDirectSpaceState

space_get_direct_state ( RID space )

float

space_get_param ( RID space, SpaceParameter param ) const

bool

space_is_active ( RID space ) const

void

space_set_active ( RID space, bool active )

void

space_set_param ( RID space, SpaceParameter param, float value )

枚举

enum JointType:


enum PinJointParam:

  • PIN_JOINT_BIAS = 0 —- 固定对象试图保持彼此位置关系的力度。

越高越强。

  • PIN_JOINT_DAMPING = 1 —- 被固定的物体试图保持彼此速度关系的力度。

越高越强。

  • PIN_JOINT_IMPULSE_CLAMP = 2 —- 如果大于0,这个值就是这个关节对其两端施加的冲量的最大值。

enum HingeJointParam:

  • HINGE_JOINT_BIAS = 0 —- 两个物体向不同方向移动时被拉回到一起的速度。

  • HINGE_JOINT_LIMIT_UPPER = 1 —- 铰链上的最大旋转。

  • HINGE_JOINT_LIMIT_LOWER = 2 —- 穿过铰链的最小旋转。

  • HINGE_JOINT_LIMIT_BIAS = 3 —- 垂直于铰链的轴线上的旋转得到纠正的速度。

  • HINGE_JOINT_LIMIT_SOFTNESS = 4

  • HINGE_JOINT_LIMIT_RELAXATION = 5 —- 该值越低,旋转速度越慢。

  • HINGE_JOINT_MOTOR_TARGET_VELOCITY = 6 —- 目标马达的目标速度。

  • HINGE_JOINT_MOTOR_MAX_IMPULSE = 7 —- 马达的最大加速度。


enum HingeJointFlag:

  • HINGE_JOINT_FLAG_USE_LIMIT = 0 —- 如果true,铰链具有最大和最小旋转。

  • HINGE_JOINT_FLAG_ENABLE_MOTOR = 1 —- 如果true,电机将转动铰链。


enum SliderJointParam:

  • SLIDER_JOINT_LINEAR_LIMIT_UPPER = 0 —- 阻尼发生前X轴上枢轴点之间的最大差异。

  • SLIDER_JOINT_LINEAR_LIMIT_LOWER = 1 —- 阻尼发生前X轴上枢轴点之间的最小差异。

  • SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS = 2 —- 一旦超过极限,应用于滑块轴上移动的系数。越低,运动越慢。

  • SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION = 3 —- 超过极限后的补偿。越低,动能损失越多。

  • SLIDER_JOINT_LINEAR_LIMIT_DAMPING = 4 —- 一旦超过滑块的极限,阻尼的数量。

  • SLIDER_JOINT_LINEAR_MOTION_SOFTNESS = 5 —- 只要滑块在限制范围内,就应用于滑块轴上移动的系数。越低,运动越慢。

  • SLIDER_JOINT_LINEAR_MOTION_RESTITUTION = 6 —- 滑块限制内的恢复量。

  • SLIDER_JOINT_LINEAR_MOTION_DAMPING = 7 —- 滑块内部的阻尼量受到限制。

  • SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS = 8 —- 应用于在垂直于滑块的轴上移动的系数。

  • SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION = 9 —- 当移动穿过垂直于滑块的轴时的恢复量。

  • SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING = 10 —- 当移动穿过垂直于滑块的轴时的阻尼量。

  • SLIDER_JOINT_ANGULAR_LIMIT_UPPER = 11 —- 滑块旋转的上限。

  • SLIDER_JOINT_ANGULAR_LIMIT_LOWER = 12 —- 滑块旋转的下限。

  • SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS = 13 —- 一旦超过极限,应用于所有旋转的系数。

  • SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION = 14 —- 超过限制时旋转的恢复量。

  • SLIDER_JOINT_ANGULAR_LIMIT_DAMPING = 15 —- 超过极限时旋转的阻尼量。

  • SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS = 16 —- 应用于所有极限旋转的因子。

  • SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION = 17 —- 极限内旋转的恢复量。

  • SLIDER_JOINT_ANGULAR_MOTION_DAMPING = 18 —- 极限内旋转的阻尼量。

  • SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS = 19 —- 应用于垂直于滑块的轴上的所有旋转的因子。

  • SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION = 20 —- 垂直于滑块的轴上的旋转恢复量。

  • SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING = 21 —- 垂直于滑块的轴上的旋转阻尼量。

  • SLIDER_JOINT_MAX = 22 —- 表示SliderJointParam枚举的大小。


enum ConeTwistJointParam:

  • CONE_TWIST_JOINT_SWING_SPAN = 0 —- 摆动是围绕垂直于扭转轴的轴线从一边到另一边的旋转。

摆动跨度定义了,多少旋转不会沿着摆动轴得到纠正。

可以定义ConeTwistJoint的松动性。

如果低于0.05,此行为被锁定。

  • CONE_TWIST_JOINT_TWIST_SPAN = 1 —- 扭曲是绕扭曲轴的旋转,此值定义了关节可以扭曲多远。

如果低于0.05,则扭曲被锁定。

  • CONE_TWIST_JOINT_BIAS = 2 —- 摆动或扭转的速度。

越高,速度越快。

  • CONE_TWIST_JOINT_SOFTNESS = 3 —- 关节扭曲的难易程度,如果它太低,则需要更多的力量来扭曲关节。

  • CONE_TWIST_JOINT_RELAXATION = 4 —- 定义两侧的摆动速度和扭转速度差异同步的速度。


enum G6DOFJointAxisParam:

  • G6DOF_JOINT_LINEAR_LOWER_LIMIT = 0 —- 枢轴点之间的最小差异。

  • G6DOF_JOINT_LINEAR_UPPER_LIMIT = 1 —- 枢轴点的轴之间的最大差异。

  • G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS = 2 —- 应用于跨轴移动的因子。越低,运动越慢。

  • G6DOF_JOINT_LINEAR_RESTITUTION = 3 —- 轴运动的恢复量。速度越低,能量损失越多。

  • G6DOF_JOINT_LINEAR_DAMPING = 4 —- 发生在跨轴线性运动的阻尼量。

  • G6DOF_JOINT_LINEAR_MOTOR_TARGET_VELOCITY = 5 —- 关节的线性马达试图达到的速度。

  • G6DOF_JOINT_LINEAR_MOTOR_FORCE_LIMIT = 6 —- 线性马达在试图达到目标速度时可以施加的最大力。

  • G6DOF_JOINT_ANGULAR_LOWER_LIMIT = 10 —- 负方向的最小旋转,以脱离和绕轴旋转。

  • G6DOF_JOINT_ANGULAR_UPPER_LIMIT = 11 —- 正方向的最小旋转,以挣脱和绕轴旋转。

  • G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS = 12 —- 一个乘以所有轴旋转的因子。

  • G6DOF_JOINT_ANGULAR_DAMPING = 13 —- 跨越Z轴的旋转阻尼量。值越低,发生的阻尼就越多。

  • G6DOF_JOINT_ANGULAR_RESTITUTION = 14 —- 在各轴上的旋转恢复量。值越低,发生的恢复量越大。

  • G6DOF_JOINT_ANGULAR_FORCE_LIMIT = 15 —- 围绕Z轴旋转时,可能发生的最大力。

  • G6DOF_JOINT_ANGULAR_ERP = 16 —- 当校正轴旋转中的极限交叉时,该误差容限因子定义了校正的减慢程度。越低越慢。

  • G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY = 17 —- 轴上电机的目标速度。

  • G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT = 18 —- 马达在轴上的最大加速度。


enum G6DOFJointAxisFlag:

  • G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT = 0 —- If set, linear motion is possible within the given limits.

  • G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT = 1 —- If set, rotational motion is possible.

  • G6DOF_JOINT_FLAG_ENABLE_MOTOR = 4 —- If set, there is a rotational motor across these axes.

  • G6DOF_JOINT_FLAG_ENABLE_LINEAR_MOTOR = 5 —- If set, there is a linear motor on this axis that targets a specific velocity.


enum ShapeType:


enum AreaParameter:

  • AREA_PARAM_GRAVITY = 0 —- 在一个地区设置/获得重力强度的常数。

  • AREA_PARAM_GRAVITY_VECTOR = 1 —- 在一个区域内设置/获取重力向量/中心的常数。

  • AREA_PARAM_GRAVITY_IS_POINT = 2 —- 常数用于设置/获取一个区域的重力向量是一个方向,还是一个中心点。

  • AREA_PARAM_GRAVITY_DISTANCE_SCALE = 3 —- 常数,用于设置/获取一个区域的点重力的衰减系数。这个值越大,重力的强度随着距离的平方下降得越快。

  • AREA_PARAM_GRAVITY_POINT_ATTENUATION = 4 —- 这个常数用于设置/获取点重力的衰减因子。它已经被AREA_PARAM_GRAVITY_DISTANCE_SCALE所取代了。

  • AREA_PARAM_LINEAR_DAMP = 5 —- 常数,用于设置/获取一个区域的线性阻尼系数。

  • AREA_PARAM_ANGULAR_DAMP = 6 —- 常数,用于设置/获取一个区域的角度阻尼系数。

  • AREA_PARAM_PRIORITY = 7 —- 常数,用于设置/获取一个区域的优先级(处理顺序)。


enum AreaSpaceOverrideMode:

  • AREA_SPACE_OVERRIDE_DISABLED = 0 —- 这个区域不影响重力/阻尼。这些一般都是只存在于检测碰撞的区域,以及进入或离开它们的物体。

  • AREA_SPACE_OVERRIDE_COMBINE = 1 —- 此区域把它的重力/阻尼加到目前已经计算过的对象上。这样一来,许多重叠的区域可以结合它们的物理运算来产生有趣的效果。

  • AREA_SPACE_OVERRIDE_COMBINE_REPLACE = 2 —- 这个区域把它的重力/阻尼加到迄今为止已经计算出来的任何东西上。然后停止考虑其余的区域,甚至默认的区域。

  • AREA_SPACE_OVERRIDE_REPLACE = 3 —- 这个区域取代了任何重力/阻尼,甚至是默认的,并停止考虑其余的区域。

  • AREA_SPACE_OVERRIDE_REPLACE_COMBINE = 4 —- 这个区域取代了到目前为止计算的任何重力/阻尼,但继续计算其余的区域,直到默认的区域。


enum BodyMode:

  • BODY_MODE_STATIC = 0 —- StaticBody 的常量。

  • BODY_MODE_KINEMATIC = 1 —- KinematicBody 的常数。

  • BODY_MODE_RIGID = 2 —- RigidBody 的常数。

  • BODY_MODE_CHARACTER = 3 —- 角色模式下刚体的常数。在这种模式下,物体不能旋转,只有它的线速度受物理运算影响。


enum BodyParameter:

  • BODY_PARAM_BOUNCE = 0 —- 常数,用于设置/获取物体的反弹系数。

  • BODY_PARAM_FRICTION = 1 —- 常数,用于设置/获取一个物体的摩擦力。

  • BODY_PARAM_MASS = 2 —- 设置/获取一个物体的质量的常数。

  • BODY_PARAM_GRAVITY_SCALE = 3 —- 常数,用于设置/获取一个物体的重力倍数。

  • BODY_PARAM_LINEAR_DAMP = 4 —- 常数,用于设置/获取一个物体的线性阻尼系数。

  • BODY_PARAM_ANGULAR_DAMP = 5 —- 常数,用于设置/获取一个物体的角度阻尼系数。

  • BODY_PARAM_MAX = 6 —- 表示BodyParameter枚举的大小。


enum BodyState:

  • BODY_STATE_TRANSFORM = 0 —- 常数,用于设置/获取物体的当前变换矩阵。

  • BODY_STATE_LINEAR_VELOCITY = 1 —- 常数,用于设置/获取物体的当前线速度。

  • BODY_STATE_ANGULAR_VELOCITY = 2 —- 常数,用于设置/获取物体的当前角速度。

  • BODY_STATE_SLEEPING = 3 —- 常数,用于使物体沉睡/唤醒,或得到它是否在沉睡。

  • BODY_STATE_CAN_SLEEP = 4 —- 常量,用于设置/获取物体是否可以休眠。


enum AreaBodyStatus:

  • AREA_BODY_ADDED = 0 —- 当对象进入其形状之一时,第一个参数和区域回调函数接收的值。

  • AREA_BODY_REMOVED = 1 —- 当对象退出其形状之一时,第一个参数和区域回调函数接收的值。


enum ProcessInfo:

  • INFO_ACTIVE_OBJECTS = 0 —- 常量,用来获取未处于睡眠状态的对象的数量。

  • INFO_COLLISION_PAIRS = 1 —- 常数,用以获取可能的碰撞数。

  • INFO_ISLAND_COUNT = 2 —- 常量,用以获取可能发生碰撞的空间区域数。


enum SpaceParameter:

  • SPACE_PARAM_CONTACT_RECYCLE_RADIUS = 0 —- 常数,用于设置/获取一对物体在其碰撞状态被重新计算之前的最大移动距离。

  • SPACE_PARAM_CONTACT_MAX_SEPARATION = 1 —- 常数,用于设置/获取形状在被视为分离之前与另一形状之间的最大距离。

  • SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION = 2 —- 常数,用来设置/得到一个形状在被认为碰撞之前穿透另一个形状的最大距离。

  • SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD = 3 —- 常数,用于设置/获取活跃的阈值线速度。一个被标记为线性速度和角速度都可能不活跃的物体将在给定的时间后进入睡眠状态。

  • SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD = 4 —- 常数,用于设置/获取活动的阈值角速度。一个被标记为线性和角速度都可能不活跃的物体,在给定的时间后将会进入睡眠状态。

  • SPACE_PARAM_BODY_TIME_TO_SLEEP = 5 —- 常数来设置/获得最大的活动时间。一个被标记为线速度和角速度都可能不活动的物体,在这个时间之后将被置入睡眠状态。

  • SPACE_PARAM_BODY_ANGULAR_VELOCITY_DAMP_RATIO = 6

  • SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS = 7 —- 常数,用于设置/获取所有物理约束的默认求解器偏置。解算器偏差是一个控制两个物体在违反约束后 “反弹 “程度的因素,以避免由于数值不精确而使它们处于这种状态。


enum BodyAxis:

  • BODY_AXIS_LINEAR_X = 1

  • BODY_AXIS_LINEAR_Y = 2

  • BODY_AXIS_LINEAR_Z = 4

  • BODY_AXIS_ANGULAR_X = 8

  • BODY_AXIS_ANGULAR_Y = 16

  • BODY_AXIS_ANGULAR_Z = 32

方法说明

  • void area_add_shape ( RID area, RID shape, Transform transform=Transform( 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 )

将区域分配给Object的子类,因此它可以存在于节点树中。


  • void area_clear_shapes ( RID area )

从一个区域移除所有形状。它不会删除形状,因此它们可以稍后重新分配。


  • RID area_create ( )

创建一个Area区域。


  • int area_get_object_instance_id ( RID area ) const

获取区域分配给的对象的实例ID。


返回区域参数值。可用参数列表位于AreaParameter常量上。


  • RID area_get_shape ( RID area, int shape_idx ) const

返回区域的第n个形状的RID


  • int area_get_shape_count ( RID area ) const

返回分配给区域的形状数量。


返回区域内形状的变换矩阵。


  • RID area_get_space ( RID area ) const

返回分配给该区域的空间。


返回该区域的空间覆盖模式。


返回区域的变换矩阵。


  • bool area_is_ray_pickable ( RID area ) const

如果true,则区域与光线碰撞。


  • void area_remove_shape ( RID area, int shape_idx )

从区域中移除一个形状。它不会删除形状,因此可以稍后重新分配。


  • void area_set_area_monitor_callback ( RID area, Object receiver, String method )

  • 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, Object receiver, String method )

设置当任何主体/区域进入或退出该区域时调用的函数。这个回调函数将被任何与区域交互的对象调用,并接受5个参数:

1: AREA_BODY_ADDEDAREA_BODY_REMOVED,取决于对象是否进入或退出该区域。

2:进入/退出该区域对象的RID

3:进入/退出该区域对象的实例ID。

4:进入/离开该区域的物体的形状指数。

5:物体进入/离开区域的形状指数。


  • void area_set_monitorable ( RID area, bool monitorable )

设置面积参数的值。可用参数列表位于AreaParameter常量上。


  • void area_set_ray_pickable ( RID area, bool enable )

设置可使用光线拾取的对象。


  • void area_set_shape ( RID area, int shape_idx, RID shape )

用另一种形状代替一种形状。旧的形状由它的索引选择,新的形状由它的RID选择。


  • void area_set_shape_disabled ( RID area, int shape_idx, bool disabled )

  • void area_set_shape_transform ( RID area, int shape_idx, Transform transform )

设置区域形状的变换矩阵。


  • void area_set_space ( RID area, RID space )

为该区域指定一个空间。


设置区域的空间替代模式。AreaSpaceOverrideMode常量中描述了这些模式。


设置区域的变换矩阵。


  • void body_add_central_force ( RID body, Vector3 force )

  • void body_add_collision_exception ( RID body, RID excepted_body )

将一个物体添加到免于碰撞的物体列表中。



  • void body_add_shape ( RID body, RID shape, Transform transform=Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ), bool disabled=false )

添加一个形状到物体,以及一个变换矩阵。形状通常通过它们的索引来引用,因此您应该跟踪哪个形状具有给定的索引。


  • void body_add_torque ( RID body, Vector3 torque )

  • void body_apply_central_impulse ( RID body, Vector3 impulse )

positionimpulse冲量方向推动物体


  • void body_apply_torque_impulse ( RID body, Vector3 impulse )

推动物体旋转。


  • void body_attach_object_instance_id ( RID body, int id )

将区域分配给Object的子类,因此它可以存在于节点树中。


  • void body_clear_shapes ( RID body )

从物体上移除所有碰撞形状。


创建物理体。对于创建的物体类型,第一个参数可以是BodyMode常量中的任何值。此外,物体可以在休眠状态下创建,以节省处理时间。


  • int body_get_collision_layer ( RID body ) const

返回物体所属的物理层或层。


  • int body_get_collision_mask ( RID body ) const

返回物体可以碰撞的物理层或层。


返回该物体的 PhysicsDirectBodyState。如果物体已被销毁或已被移出物理空间,则返回 null


  • float body_get_kinematic_safe_margin ( RID body ) const

  • int body_get_max_contacts_reported ( RID body ) const

返回可报告的最大接触数。参阅body_set_max_contacts_reported


返回物体模式。


  • int body_get_object_instance_id ( RID body ) const

获取区域分配给的对象的实例ID。


返回物体参数的值。可用参数列表位于BodyParameter常量上。


  • RID body_get_shape ( RID body, int shape_idx ) const

返回body的第n个碰撞形状的RID


  • int body_get_shape_count ( RID body ) const

返回分配给物体的碰撞形状数量。


返回物体碰撞形状的变换矩阵。


  • RID body_get_space ( RID body ) const

返回分配给物体的空间的RID


返回物体的状态。



  • bool body_is_continuous_collision_detection_enabled ( RID body ) const

如果true,则启用连续碰撞检测模式。


  • bool body_is_omitting_force_integration ( RID body ) const

返回一个body是否使用回调函数来计算它自己的物理值(参阅body_set_force_integration_callback方法)。


  • bool body_is_ray_pickable ( RID body ) const

如果true,物体可以被光线探测到。


  • void body_remove_collision_exception ( RID body, RID excepted_body )

从免于碰撞的实体列表中删除实体。

连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。


  • void body_remove_shape ( RID body, int shape_idx )

从物体上移除一个碰撞形状。碰撞形状不会被从内存中删除,所以它可以在之后被重复使用。



  • 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_enable_continuous_collision_detection ( RID body, bool enable )

如果true,则启用连续碰撞检测模式。

连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。


设置用于物体物理运算的函数,如果该物体允许的话,参阅body_set_omit_force_integration


  • void body_set_kinematic_safe_margin ( RID body, float margin )

  • void body_set_max_contacts_reported ( RID body, int amount )

设置要报告的最大关联数。物体可以保存与其他物体的关联日志,当最大数量的关联报告的数字大于 0 时才启用此功能。


BodyMode常量之一设置主体模式。


  • void body_set_omit_force_integration ( RID body, bool enable )

设置一个物体是否使用回调函数来计算它自己的物理(参阅 body_set_force_integration_callback)。


设置物体参数。可用参数列表位于BodyParameter常量上。


  • void body_set_ray_pickable ( RID body, bool enable )

如果设置了enabled,则设置可使用光线拾取的物体。


  • void body_set_shape ( RID body, int shape_idx, RID shape )

用一个给定的物体形状代替另一个。旧的形状是通过其索引选择的,新的是通过其RID选择的。


  • void body_set_shape_disabled ( RID body, int shape_idx, bool disabled )

  • void body_set_shape_transform ( RID body, int shape_idx, Transform transform )

设置物体形状的变换矩阵。


  • void body_set_space ( RID body, RID space )

给物体分配一个空间(参阅space_create)。


设置主体状态(请参阅BodyState常量)。


如果从空间的给定点向给定方向移动会导致碰撞,则返回true。可以通过PhysicsTestMotionResult来返回额外的信息。


获取圆锥体扭曲关节参数(请参阅ConeTwistJointParam常量)。


设置圆锥体扭曲关节参数(请参阅ConeTwistJointParam常量)。


  • void free_rid ( RID rid )

销毁由 PhysicsServer 创建的任何对象。如果传递的 RID 不是 PhysicsServer 可以创建的对象之一,则会向控制台发送错误。


获取generic_6_DOF_joit flag(请参阅G6DOFJointAxisFlag常量)。


获取 generic_6_DOF_joint 参数(请参阅G6DOFJointAxisParam常量)。


设置generic_6_DOF_joint flag(请参阅G6DOFJointAxisFlag常量)。


设置 generic_6_DOF_joint参数(请参阅G6DOFJointAxisParam常量)。


返回由给定的ProcessInfo输入定义的信息。


获取铰链关节标志(请参阅HingeJointFlag常量)。


获取铰链关节参数(请参阅HingeJointParam)。


设置铰链关节标志(请参阅HingeJointFlag常量)。


设置铰链关节参数(请参阅HingeJointParam常量)。


创建一个ConeTwistJoint


创建一个 Generic6DOFJoint通用6向关节。


创建一个 HingeJoint关节。


创建一个 PinJoint图钉关节。


创建一个 SliderJoint关节。


  • int joint_get_solver_priority ( RID joint ) const

获取关节的优先级值。


返回关节的类型。


  • void joint_set_solver_priority ( RID joint, int priority )

设置关节的优先级值。


  • Vector3 pin_joint_get_local_a ( RID joint ) const

返回关节在关节物体A的局部空间中的位置。


  • Vector3 pin_joint_get_local_b ( RID joint ) const

返回关节在关节物体B的局部空间中的位置。


获取pin_joint参数(请参阅PinJointParam常量)。


  • void pin_joint_set_local_a ( RID joint, Vector3 local_A )

设置关节在关节物体A的局部空间中的位置。


  • void pin_joint_set_local_b ( RID joint, Vector3 local_B )

设置关节在关节物体B的局部空间中的位置。


设置pin_joint参数(请参阅PinJointParam常量)。


  • void set_active ( bool active )

激活或停用3D物理引擎。


  • void set_collision_iterations ( int iterations )

设置计算碰撞体速度的迭代次数。迭代次数越多,碰撞就越准确。但是,更大量的迭代需要更多的 CPU 能力,这会降低性能。默认值为 8

注意: 仅在使用 GodotPhysics 引擎时有效,而不是默认的 Bullet 物理引擎。


创建一个ShapeType类型的形状。不把它分配给一个体或一个区域。要做到这一点,你必须使用area_set_shapebody_set_shape


返回形状数据。


返回形状的类型(请参阅ShapeType常量)。


设置定义形状和大小的形状数据。要传递的数据取决于创建的形状的类型shape_get_type


获取slider_joint参数(请参阅SliderJointParam常量)。


获取slider_joint参数(请参阅SliderJointParam常量)。


  • RID space_create ( )

创建一个空间。空间是物理引擎的参数集合,可以分配给区域或主体。它可以通过area_set_space分配给一个区域,或者通过body_set_space分配给一个主体。


返回空间的状态,PhysicsDirectSpaceState。此对象可用于进行碰撞/相交查询。


返回空间参数的值。


  • bool space_is_active ( RID space ) const

返回该空间是否是活动的。


  • void space_set_active ( RID space, bool active )

将空间标记为活动空间。它不会有效果,除非它被分配到一个区域或物体。


设置空间参数的值。可用参数列表位于SpaceParameter常量上。