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_ANGULAR_ERP = 16
当校正轴旋转中的极限交叉时,该误差容限因子定义了校正的减慢程度。越低越慢。
G6DOFJointAxisParam G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY = 17
轴上电机的目标速度。
G6DOFJointAxisParam G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT = 18
马达在轴上的最大加速度。
enum G6DOFJointAxisFlag:
G6DOFJointAxisFlag G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT = 0
设置时,可以在给定的范围内做线性运动。
G6DOFJointAxisFlag G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT = 1
设置时,可以做旋转运动。
G6DOFJointAxisFlag G6DOF_JOINT_FLAG_ENABLE_MOTOR = 4
设置时,存在跨这些轴的旋转马达。
G6DOFJointAxisFlag G6DOF_JOINT_FLAG_ENABLE_LINEAR_MOTOR = 5
设置时,存在跨这些轴的线性马达,以指定的速度为目标。
enum ShapeType:
ShapeType SHAPE_WORLD_BOUNDARY = 0
该 Shape3D 为 WorldBoundaryShape3D。
ShapeType SHAPE_SEPARATION_RAY = 1
该 Shape3D 为 SeparationRayShape3D。
ShapeType SHAPE_SPHERE = 2
该 Shape3D 为 SphereShape3D。
ShapeType SHAPE_BOX = 3
该 Shape3D 为 BoxShape3D。
ShapeType SHAPE_CAPSULE = 4
该 Shape3D 为 CapsuleShape3D。
ShapeType SHAPE_CYLINDER = 5
该 Shape3D 为 CylinderShape3D。
ShapeType SHAPE_CONVEX_POLYGON = 6
该 Shape3D 为 ConvexPolygonShape3D。
ShapeType SHAPE_CONCAVE_POLYGON = 7
该 Shape3D 为 ConcavePolygonShape3D。
ShapeType SHAPE_HEIGHTMAP = 8
该 Shape3D 为 HeightMapShape3D。
ShapeType SHAPE_SOFT_BODY = 9
该 Shape3D 是在柔体内部使用的。尝试创建这种形状会导致出错。
ShapeType SHAPE_CUSTOM = 10
引擎内部会使用这个常量。任何试图创建这种形状的行为都会导致错误。
enum AreaParameter:
AreaParameter AREA_PARAM_GRAVITY_OVERRIDE_MODE = 0
常量,用于在一个区域中设置/获取重力覆盖模式。有关可能的值,请参阅 AreaSpaceOverrideMode。
AreaParameter AREA_PARAM_GRAVITY = 1
常量,用于设置/获取区域中的重力强度。
AreaParameter AREA_PARAM_GRAVITY_VECTOR = 2
常量,用于设置/获取区域中的重力向量/中心。
AreaParameter AREA_PARAM_GRAVITY_IS_POINT = 3
常量,用于设置/获取区域中的重力向量是方向,还是中心点。
AreaParameter AREA_PARAM_GRAVITY_POINT_UNIT_DISTANCE = 4
常量,用于设置/获取重力强度等于 AREA_PARAM_GRAVITY 控制的重力的距离。例如,在半径为 100 米且表面重力为 4.0 m/s² 的行星上,将重力设置为 4.0,并将单位距离设置为 100.0。重力会根据平方反比定律衰减,因此在该示例中,重力在距中心 200 米处将为 1.0 m/s²(距离的两倍,重力的 1/4),在距中心 50 米处为 16.0 m/s²(距离的一半,重力的 4 倍),依此类推。
仅当单位距离为正数时,上述情况才成立。当该属性被设置为 0.0 时,无论距离如何,重力都将保持不变。
AreaParameter AREA_PARAM_LINEAR_DAMP_OVERRIDE_MODE = 5
常量,用于在一个区域中设置/获取线性阻尼覆盖模式。有关可能的值,请参阅 AreaSpaceOverrideMode。
AreaParameter AREA_PARAM_LINEAR_DAMP = 6
常数,用于设置/获取区域的线性阻尼系数。
AreaParameter AREA_PARAM_ANGULAR_DAMP_OVERRIDE_MODE = 7
常量,用于在一个区域中设置/获取角度阻尼覆盖模式。有关可能的值,请参阅 AreaSpaceOverrideMode。
AreaParameter AREA_PARAM_ANGULAR_DAMP = 8
常数,用于设置/获取区域的角度阻尼系数。
AreaParameter AREA_PARAM_PRIORITY = 9
常量,用于设置/获取区域的优先级(处理顺序)。
AreaParameter AREA_PARAM_WIND_FORCE_MAGNITUDE = 10
常量,用于设置/获取特定区域风力大小。
AreaParameter AREA_PARAM_WIND_SOURCE = 11
常量,用于设置/获取 3D 向量,该向量指定区域特定的风吹来的原点。
AreaParameter AREA_PARAM_WIND_DIRECTION = 12
常量,用于设置/获取 3D 向量,该向量指定区域特定的风吹的方向。
AreaParameter AREA_PARAM_WIND_ATTENUATION_FACTOR = 13
常量,用于设置/获取风力随距其原点的距离而减小的指数速率。
enum AreaSpaceOverrideMode:
AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_DISABLED = 0
这个区域不影响重力/阻尼。这些一般都是只存在于检测碰撞的区域,以及进入或离开它们的物体。
AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_COMBINE = 1
此区域把它的重力/阻尼加到目前已经计算过的对象上。这样一来,许多重叠的区域可以结合它们的物理运算来产生有趣的效果。
AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_COMBINE_REPLACE = 2
这个区域把它的重力/阻尼加到迄今为止已经计算出来的任何东西上。然后停止考虑其余的区域,甚至默认的区域。
AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_REPLACE = 3
这个区域取代了任何重力/阻尼,甚至是默认的,并停止考虑其余的区域。
AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_REPLACE_COMBINE = 4
这个区域取代了到目前为止计算的任何重力/阻尼,但继续计算其余的区域,直到默认的区域。
enum BodyMode:
BodyMode BODY_MODE_STATIC = 0
常量,用于静态物体。在这种模式下,物体只能由用户代码移动,移动时不会与路径上的其他物体发生碰撞。
BodyMode BODY_MODE_KINEMATIC = 1
常量,用于运动学物体。在这种模式下,物体只能由用户代码移动,会与路径上的其他物体发生碰撞。
BodyMode BODY_MODE_RIGID = 2
常量,用于刚体。在这种模式下,物体可以被其他物体推动,能够对其施加力。
BodyMode BODY_MODE_RIGID_LINEAR = 3
常量,用于线性刚体。在这种模式下,物体不能旋转,只有线速度受外力影响。
enum BodyParameter:
BodyParameter BODY_PARAM_BOUNCE = 0
常量,用于设置/获取物体的反弹系数。
BodyParameter BODY_PARAM_FRICTION = 1
常量,用于设置/获取物体的摩擦力。
BodyParameter BODY_PARAM_MASS = 2
常量,用于设置/获取物体的质量。
BodyParameter BODY_PARAM_INERTIA = 3
常量,用于设置/获取物体的惯性。
BodyParameter BODY_PARAM_CENTER_OF_MASS = 4
常量,用于设置/获取物体的质心位置,使用该物体的局部坐标系。
BodyParameter BODY_PARAM_GRAVITY_SCALE = 5
常量,用于设置/获取物体的重力倍数。
BodyParameter BODY_PARAM_LINEAR_DAMP_MODE = 6
常量,用于设置/获取物体的线性阻尼模式。可能的值见 BodyDampMode。
BodyParameter BODY_PARAM_ANGULAR_DAMP_MODE = 7
常量,用于设置/获取物体的角度阻尼模式。可能的值见 BodyDampMode。
BodyParameter BODY_PARAM_LINEAR_DAMP = 8
常数,用于设置/获取物体的线性阻尼系数。
BodyParameter BODY_PARAM_ANGULAR_DAMP = 9
常数,用于设置/获取物体的角度阻尼系数。
BodyParameter BODY_PARAM_MAX = 10
代表 BodyParameter 枚举的大小。
enum BodyDampMode:
BodyDampMode BODY_DAMP_MODE_COMBINE = 0
物体的阻尼值会叠加到替换区域中所设置的值或默认值。
BodyDampMode BODY_DAMP_MODE_REPLACE = 1
物体的阻尼值会替换区域中所设置的值或默认值。
enum BodyState:
BodyState BODY_STATE_TRANSFORM = 0
常量,用于设置/获取物体的当前变换矩阵。
BodyState BODY_STATE_LINEAR_VELOCITY = 1
常量,用于设置/获取物体的当前线速度。
BodyState BODY_STATE_ANGULAR_VELOCITY = 2
常量,用于设置/获取物体的当前角速度。
BodyState BODY_STATE_SLEEPING = 3
常量,用于使物体沉睡/唤醒,或得到它是否在沉睡。
BodyState BODY_STATE_CAN_SLEEP = 4
常量,用于设置/获取物体是否可以休眠。
enum AreaBodyStatus:
AreaBodyStatus AREA_BODY_ADDED = 0
当对象进入其形状之一时,第一个参数和区域回调函数接收的值。
AreaBodyStatus AREA_BODY_REMOVED = 1
当对象退出其形状之一时,第一个参数和区域回调函数接收的值。
enum ProcessInfo:
ProcessInfo INFO_ACTIVE_OBJECTS = 0
常量,用以获取未处于睡眠状态的对象的数量。
ProcessInfo INFO_COLLISION_PAIRS = 1
常量,用以获取可能的碰撞数。
ProcessInfo INFO_ISLAND_COUNT = 2
常量,用以获取可能发生碰撞的空间区域数。
enum SpaceParameter:
SpaceParameter SPACE_PARAM_CONTACT_RECYCLE_RADIUS = 0
常量,用于设置/获取一对物体在其碰撞状态被重新计算之前的最大移动距离。
SpaceParameter SPACE_PARAM_CONTACT_MAX_SEPARATION = 1
常量,用于设置/获取两个形状间的最大距离,超过该距离后它们将被视为分离,接触将被弃置。
SpaceParameter SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION = 2
常量,用于设置/获取两个形状互相穿透的最大距离,超过该距离后将视为碰撞。
SpaceParameter SPACE_PARAM_CONTACT_DEFAULT_BIAS = 3
常量,用于设置/获取所有物理接触的默认求解器偏差。求解器偏差是控制两个对象在重叠后“反弹”的程度的一个系数,以避免由于数值不精确而使它们处于该状态。
SpaceParameter SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD = 4
常量,用于设置/获取活跃的阈值线速度。一个被标记为线性速度和角速度都可能不活跃的物体将在给定的时间后进入睡眠状态。
SpaceParameter SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD = 5
常量,用于设置/获取活动的阈值角速度。一个被标记为线性和角速度都可能不活跃的物体,在给定的时间后将会进入睡眠状态。
SpaceParameter SPACE_PARAM_BODY_TIME_TO_SLEEP = 6
常量,用于设置/获得最大的活动时间。一个被标记为线速度和角速度都可能不活动的物体,在这个时间之后将被置入睡眠状态。
SpaceParameter SPACE_PARAM_SOLVER_ITERATIONS = 7
常量,用于设置/获取接触和约束的求解器迭代次数。迭代次数越多,碰撞和约束就越准确。然而,更多的迭代需要更多的 CPU 能力,这会降低性能。
enum BodyAxis:
BodyAxis BODY_AXIS_LINEAR_X = 1
BodyAxis BODY_AXIS_LINEAR_Y = 2
BodyAxis BODY_AXIS_LINEAR_Z = 4
BodyAxis BODY_AXIS_ANGULAR_X = 8
BodyAxis BODY_AXIS_ANGULAR_Y = 16
BodyAxis BODY_AXIS_ANGULAR_Z = 32
方法说明
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 )
将区域分配给Object的子类,因此它可以存在于节点树中。
void area_clear_shapes ( RID area )
从一个区域移除所有形状。它不会删除形状,因此它们可以稍后重新分配。
RID area_create ( )
创建 Area3D。
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
获取区域分配给的对象的实例 ID。
Variant area_get_param ( RID area, AreaParameter param ) const
返回区域参数值。可用参数列表位于 AreaParameter 常量上。
RID area_get_shape ( RID area, int shape_idx ) const
返回区域的第 n 个形状的 RID。
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 )
设置该区域的区域监视回调。当任何其他(形状)区域进入或退出(形状)给定区域时,将调用此回调,并且必须采用以下五个参数:
一个整数
status
:AREA_BODY_ADDED 或 AREA_BODY_REMOVED 取决于其他区域的形状是进入还是退出该区域,一个整数
instance_id
:附加到其他区域的ObjectID
,一个整数
area_shape_idx
:进入或退出该区域的其他区域的形状索引,一个整数
self_shape_idx
:其他区域进入或退出的区域的形状索引。
通过计算(或跟踪)进入和退出的形状,可以确定一个区域(及其所有形状)是第一次进入还是最后一次退出。
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 )
设置区域的实体监视器回调。当任何其他(形状的)实体进入或退出(形状的)给定区域时,将调用此回调,并且必须采用以下五个参数:
一个整数
status
:AREA_BODY_ADDED 或 AREA_BODY_REMOVED 取决于其他实体形状是否进入或退出该区域,一个整数
instance_id
:附加到该实体上的ObjectID
,一个整数
body_shape_idx
:进入或离开该区域的实体形状索引,一个整数
self_shape_idx
:实体进入或离开的区域的形状索引。
通过计算(或跟踪)进入和退出的形状,可以确定一个实体(及其所有形状)是第一次进入还是最后一次退出。
void area_set_monitorable ( RID area, bool monitorable )
目前没有这个方法的描述。请帮我们贡献一个!
void area_set_param ( RID area, AreaParameter param, Variant value )
设置面积参数的值。可用参数列表位于 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, 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 )
在不影响旋转的情况下,添加一个恒定的方向力,该力会随着时间的推移而持续施加,直到使用 body_set_constant_force(body, Vector3(0, 0, 0))
清除。
这相当于在实体的质心处使用 body_add_constant_force。
void body_add_constant_force ( RID body, Vector3 force, Vector3 position=Vector3(0, 0, 0) )
向实体添加一个恒定的定位力,持续施加,直到用 body_set_constant_force(body, Vector3(0, 0, 0))
清除。
position
是在全局坐标中距实体原点的偏移量。
void body_add_constant_torque ( RID body, Vector3 torque )
在不影响位置的情况下,添加一个恒定的旋转力,随着时间的推移而持续施加,直到使用 body_set_constant_torque(body, Vector3(0, 0, 0))
清除。
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 )
在不影响旋转的情况下,施加一个方向力。力是时间相关的,意味着每次物理更新都会施加。
这相当于在实体的质心处使用 body_apply_force。
void body_apply_central_impulse ( RID body, Vector3 impulse )
在不影响旋转的情况下,施加一个定向冲量。
冲动是时间无关的!每帧施加一个冲量将产生依赖于帧速率的力。出于这个原因,它应该只在模拟一次性影响时使用(否则使用“_force”函数)。
这相当于在实体的质心处使用 body_apply_impulse。
void body_apply_force ( RID body, Vector3 force, Vector3 position=Vector3(0, 0, 0) )
对实体施加一个定位力。力是时间相关的,意味着每次物理更新都会被施加。
position
是在全局坐标中距实体原点的偏移量。
void body_apply_impulse ( RID body, Vector3 impulse, Vector3 position=Vector3(0, 0, 0) )
向实体施加一个定位冲量。
冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因,它应该只在模拟一次性影响时使用(否则使用“_force”函数)。
position
是在全局坐标中距实体原点的偏移量。
void body_apply_torque ( RID body, Vector3 torque )
在不影响位置的情况下,施加一个旋转力。力是时间相关的,这意味着每次物理更新都会施加。
void body_apply_torque_impulse ( RID body, Vector3 impulse )
在不影响位置的情况下,向实体施加一个旋转冲量。
冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因,它应该只在模拟一次性影响时使用(否则使用“_force”函数)。
void body_attach_object_instance_id ( RID body, int id )
将区域分配给Object的子类,因此它可以存在于节点树中。
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
返回在每次物理更新期间,该物体被施加的总的恒定位置的力。
参阅 body_add_constant_force 和 body_add_constant_central_force。
Vector3 body_get_constant_torque ( RID body ) const
返回在每次物理更新期间,该物体被施加的总的恒定旋转的力。
PhysicsDirectBodyState3D body_get_direct_state ( RID body )
返回该物体的 PhysicsDirectBodyState3D。如果该物体已被销毁或从物理空间中移除,则返回 null
。
int body_get_max_contacts_reported ( RID body ) const
返回可报告的最大接触数。见 body_set_max_contacts_reported。
BodyMode body_get_mode ( RID body ) const
返回物体模式。
int body_get_object_instance_id ( RID body ) const
获取区域分配给的对象的实例 ID。
Variant body_get_param ( RID body, BodyParameter param ) const
返回物体参数的值。可用参数列表位于 BodyParameter 常量上。
RID body_get_shape ( RID body, int shape_idx ) const
返回物体的第 n 个碰撞形状的 RID。
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
返回分配给物体的空间的 RID。
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
如果为 true
,则启用连续碰撞检测模式。
bool body_is_omitting_force_integration ( RID body ) const
返回一个物体是否使用回调函数来计算它自己的物理值(见 body_set_force_integration_callback)。
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 )
根据形状恢复默认惯性和质心,以取消之前使用 body_set_param 设置的任何自定义值。
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 )
设置该物体在每次物理更新时应用的总恒定位置力。
见 body_add_constant_force 和 body_add_constant_central_force。
void body_set_constant_torque ( RID body, Vector3 torque )
设置该物体在每次物理更新时应用的总恒定旋转力。
void body_set_enable_continuous_collision_detection ( RID body, bool enable )
如果为 true
,则启用连续碰撞检测模式。
连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。
void body_set_force_integration_callback ( RID body, Callable callable, Variant userdata=null )
如果对象允许的话,设置用于计算该对象物理的函数(见 body_set_omit_force_integration)。力的积分函数有 2 个参数:
state
— PhysicsDirectBodyState3D 用于检索和修改物体的状态。
userdata
— 可选的用户数据,如果在调用 body_set_force_integration_callback 时被传递。
void body_set_max_contacts_reported ( RID body, int amount )
设置要报告的最大接触数。物体可以记录与其他物体的接触。将最大接触数设置为大于 0 的数字可以启用此功能。
void body_set_mode ( RID body, BodyMode mode )
从 BodyMode 常量之一设置主体模式。
void body_set_omit_force_integration ( RID body, bool enable )
设置一个物体是否使用回调函数来计算它自己的物理(见 body_set_force_integration_callback)。
void body_set_param ( RID body, BodyParameter param, Variant value )
设置物体参数。可用参数列表位于 BodyParameter 常量上。
void body_set_ray_pickable ( RID body, bool enable )
如果设置了 enable
,则将该物体设置为可通过射线拾取。
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, Transform3D transform )
设置物体形状的变换矩阵。
void body_set_space ( RID body, RID space )
给物体分配一个空间(见 space_create)。
void body_set_state ( RID body, BodyState state, Variant value )
设置主体状态(见 BodyState 常量)。
bool body_test_motion ( RID body, PhysicsTestMotionParameters3D parameters, PhysicsTestMotionResult3D result=null )
如果从空间中的给定点沿着运动向量移动会导致碰撞,则返回 true
。传递 PhysicsTestMotionParameters3D 可以设置运动参数。还可以传递 PhysicsTestMotionResult3D,从而返回其他信息。
RID box_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
RID capsule_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
RID concave_polygon_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
float cone_twist_joint_get_param ( RID joint, ConeTwistJointParam param ) const
获取圆锥体扭曲关节参数(见 ConeTwistJointParam 常量)。
void cone_twist_joint_set_param ( RID joint, ConeTwistJointParam param, float value )
设置圆锥体扭曲关节参数(见 ConeTwistJointParam 常量)。
RID convex_polygon_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
RID custom_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
RID cylinder_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
void free_rid ( RID rid )
销毁由 PhysicsServer3D 创建的任何对象。如果传入的 RID 不是由 PhysicsServer3D 创建的对象,则会向控制台发送错误。
bool generic_6dof_joint_get_flag ( RID joint, Vector3.Axis axis, G6DOFJointAxisFlag flag ) const
获取 generic_6_DOF_joit 标志(见 G6DOFJointAxisFlag 常量)。
float generic_6dof_joint_get_param ( RID joint, Vector3.Axis axis, G6DOFJointAxisParam param ) const
获取 generic_6_DOF_joint 参数(见 G6DOFJointAxisParam 常量)。
void generic_6dof_joint_set_flag ( RID joint, Vector3.Axis axis, G6DOFJointAxisFlag flag, bool enable )
设置 generic_6_DOF_joint 标志(见 G6DOFJointAxisFlag 常量)。
void generic_6dof_joint_set_param ( RID joint, Vector3.Axis axis, G6DOFJointAxisParam param, float value )
设置 generic_6_DOF_joint 参数(见 G6DOFJointAxisParam 常量)。
int get_process_info ( ProcessInfo process_info )
返回有关 3D 物理引擎当前状态的信息。可用状态的列表见 ProcessInfo。
RID heightmap_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
bool hinge_joint_get_flag ( RID joint, HingeJointFlag flag ) const
获取 hinge_joint 标志(见 HingeJointFlag 常量)。
float hinge_joint_get_param ( RID joint, HingeJointParam param ) const
获取 hinge_joint 参数(见 HingeJointParam)。
void hinge_joint_set_flag ( RID joint, HingeJointFlag flag, bool enabled )
设置 hinge_joint 标志(见 HingeJointFlag 常量)。
void hinge_joint_set_param ( RID joint, HingeJointParam param, float value )
设置 hinge_joint 参数(见 HingeJointParam 常量)。
void joint_clear ( RID joint )
目前没有这个方法的描述。请帮我们贡献一个!
RID joint_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
void joint_disable_collisions_between_bodies ( RID joint, bool disable )
设置附加至该 Joint3D 的物体能否互相碰撞。
int joint_get_solver_priority ( RID joint ) const
获取该 Joint3D 的优先级。
JointType joint_get_type ( RID joint ) const
返回该 Joint3D 的类型。
bool joint_is_disabled_collisions_between_bodies ( RID joint ) const
返回附加至该 Joint3D 的物体能否互相碰撞。
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 )
设置该 Joint3D 的优先级。
Vector3 pin_joint_get_local_a ( RID joint ) const
返回关节在关节物体 A 的局部空间中的位置。
Vector3 pin_joint_get_local_b ( RID joint ) const
返回关节在关节物体 B 的局部空间中的位置。
float pin_joint_get_param ( RID joint, PinJointParam param ) const
获取 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 的局部空间中的位置。
void pin_joint_set_param ( RID joint, PinJointParam param, float value )
设置 pin_joint 参数(见 PinJointParam 常量)。
RID separation_ray_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
void set_active ( bool active )
激活或停用 3D 物理引擎。
Variant shape_get_data ( RID shape ) const
返回形状数据。
ShapeType shape_get_type ( RID shape ) const
返回形状的类型(见 ShapeType 常量)。
void shape_set_data ( RID shape, Variant data )
设置定义形状和大小的形状数据。要传递的数据取决于创建的形状的类型 shape_get_type。
float slider_joint_get_param ( RID joint, SliderJointParam param ) const
获取 slider_joint 参数(见 SliderJointParam 常量)。
void slider_joint_set_param ( RID joint, SliderJointParam param, float value )
获取 slider_joint 参数(见 SliderJointParam 常量)。
AABB soft_body_get_bounds ( RID body ) const
目前没有这个方法的描述。请帮我们贡献一个!
RID space_create ( )
创建一个空间。空间是物理引擎的参数集合,可以分配给区域或主体。它可以通过 area_set_space 分配给一个区域,或者通过 body_set_space 分配给一个主体。
PhysicsDirectSpaceState3D space_get_direct_state ( RID space )
返回空间的状态,即 PhysicsDirectSpaceState3D。该对象可用于进行碰撞/相交的查询。
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 )
设置空间参数的值。可用参数列表位于 SpaceParameter 常量上。
RID sphere_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
RID world_boundary_shape_create ( )
目前没有这个方法的描述。请帮我们贡献一个!
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.