物理服务器¶
继承: Object
继承人: Physics2DServerSW
类别: 核心
简要说明¶
用于低级别二维物理访问的服务器接口。
方法¶
枚举¶
枚举 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_CONSTRAINT_DEFAULT_BIAS = 6 ---常量设置/获取所有物理约束的默认解算器偏差。解算器偏差是一个控制两个对象在违反约束后“反弹”多少的因素,以避免由于数值不精确而使其处于该状态。
SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH = 7
枚举 ShapeType :
SHAPE_LINE = 0 ---这是创建线条形状的常量。线形状是一条带原点和法向的无限线。因此,它可以用于前/后检查。
SHAPE_RAY = 1
SHAPE_SEGMENT = 2 ---这是创建分段形状的常量。线段形状是从A点到B点的直线。可以检查相交点。
SHAPE_CIRCLE = 3 ---这是创建圆形的常量。圆形只有半径。可用于交叉口和内外检查。
SHAPE_RECTANGLE = 4 ---这是创建矩形的常量。矩形由宽度和高度定义。可用于交叉口和内外检查。
SHAPE_CAPSULE = 5 ---这是创建胶囊形状的常量。胶囊形状由半径和长度定义。可用于交叉口和内外检查。
SHAPE_CONVEX_POLYGON = 6 ---这是创建凸多边形的常量。多边形由点列表定义。可用于交叉口和内外检查。不同于 CollisionPolygon2D.polygon 属性,多边形修改为 shape_set_data 不要验证所提供的点是凸多边形。
SHAPE_CONCAVE_POLYGON = 7 ---这是创建凹多边形的常量。多边形由点列表定义。它可以用于交叉口检查,但不能用于内部/外部检查。
SHAPE_CUSTOM = 8 ---此常数由引擎内部使用。任何创建此类形状的尝试都会导致错误。
枚举 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_LINEAR_DAMP = 5 ---常量设置/获取一个区域的线性阻尼系数。
AREA_PARAM_ANGULAR_DAMP = 6 ---常量设置/获取一个区域的角阻尼系数。
AREA_PARAM_PRIORITY = 7 ---设置/获取区域优先级(处理顺序)的常量。
枚举 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 ---此区域将替换到目前为止计算的所有重力/阻尼,但将继续计算其余区域,直至默认区域。
枚举 BodyMode :
BODY_MODE_STATIC = 0 ——静止物体的常数。
BODY_MODE_KINEMATIC = 1 ——运动体常数。
BODY_MODE_RIGID = 2 ——刚体常数。
BODY_MODE_CHARACTER = 3 ——在字符模式下,刚性体的常数。在这种模式下,物体不能旋转,只有它的线速度受物理学的影响。
枚举 BodyParameter :
BODY_PARAM_BOUNCE = 0 ---设置/获取物体的反弹系数的常数。
BODY_PARAM_FRICTION = 1 ---设定/获得物体摩擦力的常数。
BODY_PARAM_MASS = 2 ---设定/获取物体质量的常数。
BODY_PARAM_INERTIA = 3 ——设定/获得物体惯性的常数。
BODY_PARAM_GRAVITY_SCALE = 4 ---设置/获取物体重力倍增器的常数。
BODY_PARAM_LINEAR_DAMP = 5 ---设置/获取物体线性阻尼系数的常数。
BODY_PARAM_ANGULAR_DAMP = 6 ---设置/获取物体的角阻尼系数的常数。
BODY_PARAM_MAX = 7 ---表示 BodyParameter 枚举。
枚举 BodyState :
BODY_STATE_TRANSFORM = 0 ---常量,用于设置/获取物体的电流变换矩阵。
BODY_STATE_LINEAR_VELOCITY = 1 ——设定/获取物体当前线速度的常数。
BODY_STATE_ANGULAR_VELOCITY = 2 ---设定/获取物体当前角速度的常数。
BODY_STATE_SLEEPING = 3 ---不断地睡/醒一个身体,或者了解它是否在睡觉。
BODY_STATE_CAN_SLEEP = 4 ---持续设置/获取身体是否可以睡眠。
枚举 JointType :
JOINT_PIN = 0 ---创建销接头的常量。
JOINT_GROOVE = 1 ---恒定以创建槽接头。
JOINT_DAMPED_SPRING = 2 ---创建阻尼弹簧接头的常量。
枚举 JointParam :
JOINT_PARAM_BIAS = 0
JOINT_PARAM_MAX_BIAS = 1
JOINT_PARAM_MAX_FORCE = 2
枚举 DampedStringParam :
DAMPED_STRING_REST_LENGTH = 0 ---设置弹簧接头的静止长度。当关节被拉开时,它总是试图回到这个长度。
DAMPED_STRING_STIFFNESS = 1 ---设置弹簧接头的刚度。关节施加的力等于刚度乘以与其静止长度的距离。
DAMPED_STRING_DAMPING = 2 ---设置弹簧接头的阻尼比。值0表示无阻尼弹簧,而1使系统尽快达到平衡(临界阻尼)。
枚举 CCDMode :
CCD_MODE_DISABLED = 0 ---禁用连续碰撞检测。这是检测身体碰撞的最快方法,但可能会错过小的、快速移动的物体。
CCD_MODE_CAST_RAY = 1 ---通过光线投射实现连续碰撞检测。它比造型快,但精度较低。
CCD_MODE_CAST_SHAPE = 2 ---通过形状转换实现连续碰撞检测。这是最慢的CCD方法,也是最精确的。
枚举 AreaBodyStatus :
AREA_BODY_ADDED = 0 ---当对象进入其形状时,第一个参数和区域回调函数的值将被接收。
AREA_BODY_REMOVED = 1 ---当对象退出其形状时,第一个参数和区域回调函数的值接收。
枚举 ProcessInfo :
INFO_ACTIVE_OBJECTS = 0 ---常量,用于获取不休眠的对象数。
INFO_COLLISION_PAIRS = 1 ---常量以获取可能发生的碰撞数。
INFO_ISLAND_COUNT = 2 ——常数,得到可能发生碰撞的空间区域数。
描述¶
physics2dserver是负责所有二维物理的服务器。它可以创建多种物理对象,但不会将它们插入到节点树中。
方法说明¶
void area_add_shape ( RID area, RID shape, Transform2D transform=Transform2D( 1, 0, 0, 1, 0, 0 ), bool disabled=false )
向区域中添加形状以及变换矩阵。形状通常由其索引引用,因此应跟踪哪个形状具有给定索引。
将区域分配给的后代 Object ,因此它可以存在于节点树中。
void area_clear_shapes ( RID area )
从区域中删除所有形状。它不会删除形状,因此可以稍后重新分配。
RID area_create ( )
创建一个 Area2D .
获取该区域分配给的对象的实例ID。
Variant area_get_param ( RID area, AreaParameter param ) const
返回区域参数值。见 AreaParameter 获取可用参数的列表。
返回 RID 一个区域的第n个形状。
返回分配给区域的形状数。
Transform2D area_get_shape_transform ( RID area, int shape_idx ) const
返回区域内形状的转换矩阵。
返回分配给该区域的空间。
AreaSpaceOverrideMode area_get_space_override_mode ( RID area ) const
返回区域的空间覆盖模式。
Transform2D area_get_transform ( RID area ) const
返回区域的转换矩阵。
从区域中删除形状。它不会删除形状,因此可以稍后重新分配。
将区域指定给一个或多个物理层。
设置区域将监视的物理层。
设置任何实体/区域进入或退出该区域时要调用的函数。对于与区域交互的任何对象都将调用此回调,并接受五个参数:
1:添加或删除区域主体,取决于对象是进入还是退出该区域。
2: RID 进入/退出该区域的对象。
3:进入/退出该区域的对象的实例ID。
4:进入/退出区域的对象的形状索引。
5:对象进入/退出区域的形状索引。
void area_set_param ( RID area, AreaParameter param, Variant value )
设置区域参数的值。见 AreaParameter 获取可用参数的列表。
用另一个区域形状替换给定的区域形状。旧形状按其索引选择,新形状按其 RID .
禁用区域中的给定形状。
void area_set_shape_transform ( RID area, int shape_idx, Transform2D transform )
设置区域形状的变换矩阵。
为区域指定空间。
void area_set_space_override_mode ( RID area, AreaSpaceOverrideMode mode )
设置区域的空间覆盖模式。见 AreaSpaceOverrideMode 有关可用模式的列表。
void area_set_transform ( RID area, Transform2D transform )
设置区域的变换矩阵。
将主体添加到免除碰撞的主体列表中。
向施加的力和扭矩添加定位力。和…一样 body_apply_impulse 力和与物体原点的偏移都在全局坐标中。力与冲力的区别在于,虽然两者都是力,但冲力被施加后会自行清除。
void body_add_shape ( RID body, RID shape, Transform2D transform=Transform2D( 1, 0, 0, 1, 0, 0 ), bool disabled=false )
将形状与转换矩阵一起添加到主体。形状通常由其索引引用,因此应跟踪哪个形状具有给定索引。
在施加的力和扭矩上增加定位脉冲。力和与物体原点的偏移都在全局坐标中。
将区域分配给的后代 Object ,因此它可以存在于节点树中。
void body_clear_shapes ( RID body )
从正文中删除所有形状。
RID body_create ( )
创建物理体。
返回一个或多个实体所属的物理层。
返回一个或多个实体可以碰撞的物理层。
返回连续碰撞检测模式。
Physics2DDirectBodyState body_get_direct_state ( RID body )
返回 Physics2DDirectBodyState 身体的。
返回可报告的最大联系人数。见 body_set_max_contacts_reported .
返回主体模式。
获取该区域分配给的对象的实例ID。
float body_get_param ( RID body, BodyParameter param ) const
返回body参数的值。见 BodyParameter 获取可用参数的列表。
返回 RID 一个物体的第n个形状。
返回分配给正文的形状数。
返回实体形状的元数据。
Transform2D body_get_shape_transform ( RID body, int shape_idx ) const
返回实体形状的转换矩阵。
返回 RID 分配给身体的空间。
返回主体状态。
返回主体是否使用回调函数计算其自身的物理(请参见 body_set_force_integration_callback )
从免除碰撞的实体列表中删除实体。
从实体中删除形状。该形状不会被删除,因此以后可以重复使用。
设置轴速度。给定矢量轴上的速度将设置为给定的矢量长度。这对跳跃行为很有用。
设置一个或多个实体所属的物理层。
设置一个或多个实体可以碰撞的物理层。
使用以下选项之一设置连续碰撞检测模式 CCDMode 常量。
连续碰撞检测试图预测运动物体将在何处碰撞,而不是移动它,并在碰撞时纠正它的运动。
void body_set_force_integration_callback ( RID body, Object receiver, String method, Variant userdata=null )
如果对象允许,设置用于计算对象物理的函数(请参见 body_set_omit_force_integration )
设置要报告的最大联系人数。正文可以保存与其他正文的联系人的日志,这是通过设置报告给大于0的数字的联系人的最大数量来启用的。
使用以下选项之一设置主体模式 BodyMode 常量。
设置主体是否使用回调函数计算其自身物理(请参见 body_set_force_integration_callback )
void body_set_param ( RID body, BodyParameter param, float value )
设置主体参数。见 BodyParameter 获取可用参数的列表。
用另一个代替给定的体形。旧形状按其索引选择,新形状按其 RID .
启用车身上的单向碰撞,如果 enable
是 true
.
禁用正文中的形状,如果 disable
是 true
.
设置实体内形状的元数据。此元数据与 Object.set_meta ,并且可以在形状查询中检索。
void body_set_shape_transform ( RID body, int shape_idx, Transform2D transform )
设置身体形状的变换矩阵。
为主体指定空间(请参见 space_create )
使用 BodyState 常量。
bool body_test_motion ( RID body, Transform2D from, Vector2 motion, bool infinite_inertia, float margin=0.08, Physics2DTestMotionResult result=null )
返回实体是否可以从给定点沿给定方向移动。除了布尔返回值,a Physics2DTestMotionResult 可以传递以返回中的附加信息。
RID capsule_shape_create ( )
RID circle_shape_create ( )
RID concave_polygon_shape_create ( )
RID convex_polygon_shape_create ( )
在两个实体之间创建阻尼弹簧连接。如果没有指定,则假定第二个主体是关节本身。
float damped_string_joint_get_param ( RID joint, DampedStringParam param ) const
返回阻尼弹簧连接参数的值。
void damped_string_joint_set_param ( RID joint, DampedStringParam param, float value )
设置阻尼弹簧连接参数。见 DampedStringParam 获取可用参数的列表。
void free_rid ( RID rid )
销毁由physics2dserver创建的任何对象。如果 RID passed不是physics2dserver可以创建的对象之一,将向控制台发送一个错误。
int get_process_info ( ProcessInfo process_info )
返回有关二维物理引擎当前状态的信息。见 ProcessInfo 获取可用状态的列表。
RID groove_joint_create ( Vector2 groove1_a, Vector2 groove2_a, Vector2 anchor_b, RID body_a, RID body_b )
在两个实体之间创建凹槽接头。如果未指定,则假定主体是关节本身。
float joint_get_param ( RID joint, JointParam param ) const
返回关节参数的值。
返回关节的类型(请参见 JointType )
void joint_set_param ( RID joint, JointParam param, float value )
设置关节参数。见 JointParam 获取可用参数的列表。
RID line_shape_create ( )
在两个实体之间创建销接头。如果没有指定,则假定第二个主体是关节本身。
RID ray_shape_create ( )
RID rectangle_shape_create ( )
RID segment_shape_create ( )
void set_active ( bool active )
激活或停用二维物理引擎。
返回形状数据。
返回形状的类型(请参见 ShapeType )
设置定义其形状和大小的形状数据。要传递的数据取决于创建的形状的类型 shape_get_type .
RID space_create ( )
创建空间。空间是物理引擎的参数集合,可以分配给一个区域或一个物体。它可以分配给 area_set_space 或对身体 body_set_space .
Physics2DDirectSpaceState space_get_direct_state ( RID space )
返回空间的状态,a Physics2DDirectSpaceState . 此对象可用于进行碰撞/交叉查询。
float space_get_param ( RID space, SpaceParameter param ) const
返回空间参数的值。
返回空间是否处于活动状态。
将空间标记为活动。它不会有效果,除非它被分配到一个区域或身体。
void space_set_param ( RID space, SpaceParameter param, float value )
设置空间参数的值。见 SpaceParameter 获取可用参数的列表。