Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
PhysicsServer3D¶
继承: Object
用于访问低阶 3D 物理的服务器接口。
描述¶
PhysicsServer3D 是负责所有 3D 物理的服务器。它可以直接创建和操作所有物理对象:
Space(空间)是用于物理仿真的自包含世界。它包含实体、区域和关节。可以对其状态进行查询,获取碰撞和相交信息,并且可以修改部分仿真参数。
Shape(形状)是球形、盒形、圆柱形、多边形等几何形状。加入到实体/区域中就可以用来进行碰撞检测,还可以带有相对于实体/区域原点的额外变换。实体/区域中可以添加多个(变换后的)形状,并且可以使用不同的局部变换将单个形状多次添加到实体/区域中。
Body(实体)是物理对象,可以处于静态、运动学或刚性模式。可以对其状态进行查询和更新(例如位置、速度等)。可以设置力的集成回调,自定义实体的物理特性。
Area(区域)是空间中的区块,可用于检测进入和离开它的实体和区域。可以设置实体的监视回调,报告进入/离开的实体形状,同样可以设置区域的监视回调。通过设置区域参数,可以在区域内覆盖重力和阻尼。
Joint(关节)是两个实体之间或一个实体相对于某个点的约束。可以调整关节偏置和弹簧关节的放松长度等参数。
PhysicsServer3D 中的物理对象可以独立创建和操作;不必将它们绑定到场景树中的节点。
注意:所有 3D 物理节点都在内部使用这个物理服务器。将物理节点添加到场景树,就会导致在物理服务器中创建相应的物理对象。刚体节点会注册回调,该回调会(在每次物理更新时)使用物理服务器中相应实体对象的变换更新该节点的变换。区域节点会注册回调,用来通知区域节点与物理服务器中相应区域对象的重叠。射线投射节点会查询物理服务器中相关空间的直接状态。
方法¶
枚举¶
enum JointType:
JointType JOINT_TYPE_PIN = 0
该 Joint3D 为 PinJoint3D。
JointType JOINT_TYPE_HINGE = 1
该 Joint3D 为 HingeJoint3D。
JointType JOINT_TYPE_SLIDER = 2
该 Joint3D 为 SliderJoint3D。
JointType JOINT_TYPE_CONE_TWIST = 3
该 Joint3D 为 ConeTwistJoint3D。
JointType JOINT_TYPE_6DOF = 4
该 Joint3D 为 Generic6DOFJoint3D。
JointType JOINT_TYPE_MAX = 5
代表 JointType 枚举的大小。
enum PinJointParam:
PinJointParam PIN_JOINT_BIAS = 0
固定对象试图保持彼此位置关系的力度。
越高越强。
PinJointParam PIN_JOINT_DAMPING = 1
被固定的物体试图保持彼此速度关系的力度。
越高越强。
PinJointParam PIN_JOINT_IMPULSE_CLAMP = 2
如果高于 0,则此值是此 Joint3D 施加在其末端的冲量的最大值。
enum HingeJointParam:
HingeJointParam HINGE_JOINT_BIAS = 0
两个物体向不同方向移动时被拉回到一起的速度。
HingeJointParam HINGE_JOINT_LIMIT_UPPER = 1
铰链上的最大旋转。
HingeJointParam HINGE_JOINT_LIMIT_LOWER = 2
铰链上的最小旋转。
HingeJointParam HINGE_JOINT_LIMIT_BIAS = 3
垂直于铰链的轴线上的旋转得到纠正的速度。
HingeJointParam HINGE_JOINT_LIMIT_SOFTNESS = 4
HingeJointParam HINGE_JOINT_LIMIT_RELAXATION = 5
该值越低,旋转速度越慢。
HingeJointParam HINGE_JOINT_MOTOR_TARGET_VELOCITY = 6
目标马达的目标速度。
HingeJointParam HINGE_JOINT_MOTOR_MAX_IMPULSE = 7
马达的最大加速度。
enum HingeJointFlag:
HingeJointFlag HINGE_JOINT_FLAG_USE_LIMIT = 0
如果为 true
,铰链具有最大和最小旋转。
HingeJointFlag HINGE_JOINT_FLAG_ENABLE_MOTOR = 1
如果为 true
,则马达将转动铰链。
enum SliderJointParam:
SliderJointParam SLIDER_JOINT_LINEAR_LIMIT_UPPER = 0
阻尼发生前轴心点之间在 X 轴上的最大差异。
SliderJointParam SLIDER_JOINT_LINEAR_LIMIT_LOWER = 1
阻尼发生前轴心点之间在 X 轴上的最小差异。
SliderJointParam SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS = 2
一旦超过极限,应用于滑块轴上移动的系数。越低,运动越慢。
SliderJointParam SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION = 3
超出限制后的补偿。数值越低,损失的速度能量越多。
SliderJointParam SLIDER_JOINT_LINEAR_LIMIT_DAMPING = 4
一旦超过滑块的极限,阻尼的数量。
SliderJointParam SLIDER_JOINT_LINEAR_MOTION_SOFTNESS = 5
只要滑块在限制范围内,就应用于滑块轴上移动的系数。越低,运动越慢。
SliderJointParam SLIDER_JOINT_LINEAR_MOTION_RESTITUTION = 6
滑块限制内的恢复量。
SliderJointParam SLIDER_JOINT_LINEAR_MOTION_DAMPING = 7
滑块内部的阻尼量受到限制。
SliderJointParam SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS = 8
应用于在垂直于滑块的轴上移动的系数。
SliderJointParam SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION = 9
当移动穿过垂直于滑块的轴时的恢复量。
SliderJointParam SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING = 10
当移动穿过垂直于滑块的轴时的阻尼量。
SliderJointParam SLIDER_JOINT_ANGULAR_LIMIT_UPPER = 11
滑块旋转的上限。
SliderJointParam SLIDER_JOINT_ANGULAR_LIMIT_LOWER = 12
滑块旋转的下限。
SliderJointParam SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS = 13
一旦超过极限,应用于所有旋转的系数。
SliderJointParam SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION = 14
超过限制时旋转的恢复量。
SliderJointParam SLIDER_JOINT_ANGULAR_LIMIT_DAMPING = 15
超过极限时旋转的阻尼量。
SliderJointParam SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS = 16
应用于所有极限旋转的因子。
SliderJointParam SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION = 17
极限内旋转的恢复量。
SliderJointParam SLIDER_JOINT_ANGULAR_MOTION_DAMPING = 18
极限内旋转的阻尼量。
SliderJointParam SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS = 19
应用于垂直于滑块的轴上的所有旋转的因子。
SliderJointParam SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION = 20
垂直于滑块的轴上的旋转恢复量。
SliderJointParam SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING = 21
垂直于滑块的轴上的旋转阻尼量。
SliderJointParam SLIDER_JOINT_MAX = 22
代表 SliderJointParam 枚举的大小。
enum ConeTwistJointParam:
ConeTwistJointParam CONE_TWIST_JOINT_SWING_SPAN = 0
摆动是围绕垂直于扭转轴的轴线,从一边到另一边的旋转。
摆动跨度定义了沿摆动轴旋转多少不会得到校正。
可以被定义为 ConeTwistJoint3D 中的松动。
如果低于 0.05,该行为将被锁定。
ConeTwistJointParam CONE_TWIST_JOINT_TWIST_SPAN = 1
扭转是绕扭转轴的旋转,此值定义了关节可以扭转多远。
如果低于 0.05,则扭转被锁定。
ConeTwistJointParam CONE_TWIST_JOINT_BIAS = 2
摆动或扭转的速度。
越高,速度越快。
ConeTwistJointParam CONE_TWIST_JOINT_SOFTNESS = 3
Joint3D 的扭曲弹性,如果太低,就需要更大的力才能扭曲关节。
ConeTwistJointParam CONE_TWIST_JOINT_RELAXATION = 4
定义两侧的摆动速度和扭转速度差异同步的速度。
enum G6DOFJointAxisParam:
G6DOFJointAxisParam G6DOF_JOINT_LINEAR_LOWER_LIMIT = 0
轴心点的轴之间的最小差异。
G6DOFJointAxisParam G6DOF_JOINT_LINEAR_UPPER_LIMIT = 1
轴心点的轴之间的最大差异。
G6DOFJointAxisParam G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS = 2
应用于跨轴移动的因子。越低,运动越慢。
G6DOFJointAxisParam G6DOF_JOINT_LINEAR_RESTITUTION = 3
轴运动的恢复量。速度越低,能量损失越多。
G6DOFJointAxisParam G6DOF_JOINT_LINEAR_DAMPING = 4
发生在跨轴线性运动的阻尼量。
G6DOFJointAxisParam G6DOF_JOINT_LINEAR_MOTOR_TARGET_VELOCITY = 5
关节的线性马达试图达到的速度。
G6DOFJointAxisParam G6DOF_JOINT_LINEAR_MOTOR_FORCE_LIMIT = 6
线性马达在试图达到目标速度时可以施加的最大力。
G6DOFJointAxisParam G6DOF_JOINT_ANGULAR_LOWER_LIMIT = 10
负方向的最小旋转,以脱离和绕轴旋转。
G6DOFJointAxisParam G6DOF_JOINT_ANGULAR_UPPER_LIMIT = 11
正方向的最小旋转,以挣脱和绕轴旋转。
G6DOFJointAxisParam G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS = 12
乘以所有轴旋转的因子。
G6DOFJointAxisParam G6DOF_JOINT_ANGULAR_DAMPING = 13
跨该轴的旋转阻尼量。值越低,发生的阻尼就越多。
G6DOFJointAxisParam G6DOF_JOINT_ANGULAR_RESTITUTION = 14
在各轴上的旋转恢复量。值越低,发生的恢复量越大。
G6DOFJointAxisParam G6DOF_JOINT_ANGULAR_FORCE_LIMIT = 15
围绕 Z 轴旋转时,可能发生的最大力。
G6DOFJointAxisParam G6DOF_JOINT_