跳转至

Physics2DServer

继承

Object

简要描述

用于底层2D物理访问的服务器接口。

描述

Physics2DServer是负责所有2D物理的服务器,可以创建各种物理对象,但是不会把它们插入到节点树中

方法

返回值类型 方法名称
void area_add_shape(area: RID, shape: RID, transform: Transform2D = Transform2D( 1, 0, 0, 1, 0, 0 ), disabled: bool = false)
void area_attach_canvas_instance_id(area: RID, id: int)
void area_attach_object_instance_id(area: RID, id: int)
void area_clear_shapes(area: RID)
RID area_create()
int area_get_canvas_instance_id(area: RID) const
int area_get_object_instance_id(area: RID) const
Variant area_get_param(area: RID, param: int) const
RID area_get_shape(area: RID, shape_idx: int) const
int area_get_shape_count(area: RID) const
Transform2D area_get_shape_transform(area: RID, shape_idx: int) const
RID area_get_space(area: RID) const
int area_get_space_override_mode(area: RID) const
Transform2D area_get_transform(area: RID) const
void area_remove_shape(area: RID, shape_idx: int)
void area_set_area_monitor_callback(area: RID, receiver: Object, method: String)
void area_set_collision_layer(area: RID, layer: int)
void area_set_collision_mask(area: RID, mask: int)
void area_set_monitor_callback(area: RID, receiver: Object, method: String)
void area_set_monitorable(area: RID, monitorable: bool)
void area_set_param(area: RID, param: int, value: Variant)
void area_set_shape(area: RID, shape_idx: int, shape: RID)
void area_set_shape_disabled(area: RID, shape_idx: int, disabled: bool)
void area_set_shape_transform(area: RID, shape_idx: int, transform: Transform2D)
void area_set_space(area: RID, space: RID)
void area_set_space_override_mode(area: RID, mode: int)
void area_set_transform(area: RID, transform: Transform2D)
void body_add_central_force(body: RID, force: Vector2)
void body_add_collision_exception(body: RID, excepted_body: RID)
void body_add_force(body: RID, offset: Vector2, force: Vector2)
void body_add_shape(body: RID, shape: RID, transform: Transform2D = Transform2D( 1, 0, 0, 1, 0, 0 ), disabled: bool = false)
void body_add_torque(body: RID, torque: float)
void body_apply_central_impulse(body: RID, impulse: Vector2)
void body_apply_impulse(body: RID, position: Vector2, impulse: Vector2)
void body_apply_torque_impulse(body: RID, impulse: float)
void body_attach_canvas_instance_id(body: RID, id: int)
void body_attach_object_instance_id(body: RID, id: int)
void body_clear_shapes(body: RID)
RID body_create()
int body_get_canvas_instance_id(body: RID) const
int body_get_collision_layer(body: RID) const
int body_get_collision_mask(body: RID) const
int body_get_continuous_collision_detection_mode(body: RID) const
Physics2DDirectBodyState body_get_direct_state(body: RID)
int body_get_max_contacts_reported(body: RID) const
int body_get_mode(body: RID) const
int body_get_object_instance_id(body: RID) const
float body_get_param(body: RID, param: int) const
RID body_get_shape(body: RID, shape_idx: int) const
int body_get_shape_count(body: RID) const
Variant body_get_shape_metadata(body: RID, shape_idx: int) const
Transform2D body_get_shape_transform(body: RID, shape_idx: int) const
RID body_get_space(body: RID) const
Variant body_get_state(body: RID, state: int) const
bool body_is_omitting_force_integration(body: RID) const
void body_remove_collision_exception(body: RID, excepted_body: RID)
void body_remove_shape(body: RID, shape_idx: int)
void body_set_axis_velocity(body: RID, axis_velocity: Vector2)
void body_set_collision_layer(body: RID, layer: int)
void body_set_collision_mask(body: RID, mask: int)
void body_set_continuous_collision_detection_mode(body: RID, mode: int)
void body_set_force_integration_callback(body: RID, receiver: Object, method: String, userdata: Variant = null)
void body_set_max_contacts_reported(body: RID, amount: int)
void body_set_mode(body: RID, mode: int)
void body_set_omit_force_integration(body: RID, enable: bool)
void body_set_param(body: RID, param: int, value: float)
void body_set_shape(body: RID, shape_idx: int, shape: RID)
void body_set_shape_as_one_way_collision(body: RID, shape_idx: int, enable: bool, margin: float)
void body_set_shape_disabled(body: RID, shape_idx: int, disabled: bool)
void body_set_shape_metadata(body: RID, shape_idx: int, metadata: Variant)
void body_set_shape_transform(body: RID, shape_idx: int, transform: Transform2D)
void body_set_space(body: RID, space: RID)
void body_set_state(body: RID, state: int, value: Variant)
bool body_test_motion(body: RID, from: Transform2D, motion: Vector2, infinite_inertia: bool, margin: float = 0.08, result: Physics2DTestMotionResult = null)
RID capsule_shape_create()
RID circle_shape_create()
RID concave_polygon_shape_create()
RID convex_polygon_shape_create()
RID damped_spring_joint_create(anchor_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID)
float damped_string_joint_get_param(joint: RID, param: int) const
void damped_string_joint_set_param(joint: RID, param: int, value: float)
void free_rid(rid: RID)
int get_process_info(process_info: int)
RID groove_joint_create(groove1_a: Vector2, groove2_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID)
float joint_get_param(joint: RID, param: int) const
int joint_get_type(joint: RID) const
void joint_set_param(joint: RID, param: int, value: float)
RID line_shape_create()
RID pin_joint_create(anchor: Vector2, body_a: RID, body_b: RID)
RID ray_shape_create()
RID rectangle_shape_create()
RID segment_shape_create()
void set_active(active: bool)
Variant shape_get_data(shape: RID) const
int shape_get_type(shape: RID) const
void shape_set_data(shape: RID, data: Variant)
RID space_create()
Physics2DDirectSpaceState space_get_direct_state(space: RID)
float space_get_param(space: RID, param: int) const
bool space_is_active(space: RID) const
void space_set_active(space: RID, active: bool)
void space_set_param(space: RID, param: int, value: float)
##枚举
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_CONSTRAINT_DEFAULT_BIAS = 6

常数,用于设置/获取所有物理约束的默认求解器偏差,求解器偏差是一个因子,用于决定两个对象之间如何进行“回弹”,在违背了约束之后,避免把它们留在当前状态,这样会造成数值上的不精确

  • SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH = 7

enum 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

这是用于创建凸多边形形状的常数,凸多边形通过一组点来定义,它可以用于检测相交或者内部/外部的检测

  • SHAPE_CONCAVE_POLYGON = 7

这是用于创建凹面多边形的常数,凹多边形通过一组点来定义,它可以用于检测相交或者内部/外部的检测

  • SHAPE_CUSTOM = 8

该常量由引擎内部使用,任何企图创建本类型形状的操作都会产生一个错误


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

静态实体常数。

  • BODY_MODE_KINEMATIC = 1

运动实体常数。

  • BODY_MODE_RIGID = 2

刚体常数。

  • BODY_MODE_CHARACTER = 3

角色模式下刚体的常数。


enum 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枚举的大小。


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 JointType: - JOINT_PIN = 0

创建铰链接头常数。

  • JOINT_GROOVE = 1

创建凹槽接头常数。

  • JOINT_DAMPED_SPRING = 2

创建阻尼弹簧接头常数。


enum JointParam: - JOINT_PARAM_BIAS = 0

  • JOINT_PARAM_MAX_BIAS = 1

  • JOINT_PARAM_MAX_FORCE = 2


enum DampedStringParam: - DAMPED_STRING_REST_LENGTH = 0

设置弹簧接头的静止长度,当弹簧被拉开后,接头总会尝试回到它的静止长度

  • DAMPED_STRING_STIFFNESS = 1

设置弹簧接头的刚度,接头会应用一个力,这个力的大小是本参数倍数乘以当前接头位置到静止位置的距离

  • DAMPED_STRING_DAMPING = 2

设置弹簧接头的阻尼比,如果值为0,那么这个弹簧是没有阻尼的,如果值为1,系统会尝试最快速的回到一个平衡状态(临界阻尼)


enum CCDMode: - CCD_MODE_DISABLED = 0

禁用连续碰撞检测,这种模式可以达到效率最高的碰撞检测,但是可能会错过一些很小且运动速度很快的物体

  • CCD_MODE_CAST_RAY = 1

通过光线投射实现连续碰撞检测,这种检测比转换形状快一些,但是精度也低一些

  • CCD_MODE_CAST_SHAPE = 2

通过shapecast进行连续碰撞检测,这是最慢的检测方式,但是同时拥有最高的精度


enum AreaBodyStatus: - AREA_BODY_ADDED = 0

当对象进入其形状之一时,将接收第一个参数和区域回调函数的值。

  • AREA_BODY_REMOVED = 1

当对象退出其形状之一时,将接收第一个参数和区域回调函数的值。


enum ProcessInfo: - INFO_ACTIVE_OBJECTS = 0

用于获取未休眠的对象数的常数。

  • INFO_COLLISION_PAIRS = 1

用于获取可能发生的碰撞次数的常数。

  • INFO_ISLAND_COUNT = 2

用于获取可能发生碰撞的空间区域数的常数。


方法说明

  • area_add_shape area_add_shape(area: RID, shape: RID, transform: Transform2D = Transform2D( 1, 0, 0, 1, 0, 0 ), disabled: bool = false)

向该区域添加形状以及变换矩阵,形状一般通过索引指定,所以你也可以通过索引找到指定的形状


  • area_attach_canvas_instance_id area_attach_canvas_instance_id(area: RID, id: int)

  • area_attach_object_instance_id area_attach_object_instance_id(area: RID, id: int)

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


  • area_clear_shapes area_clear_shapes(area: RID)

移除区域中的所有形状,这并不会真正的删除那些形状,所以它们还可以再被赋值回来


  • area_create area_create()

创建一个Area2D


  • area_get_canvas_instance_id area_get_canvas_instance_id(area: RID) const

  • area_get_object_instance_id area_get_object_instance_id(area: RID) const

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


  • area_get_param area_get_param(area: RID, param: int) const

返回区域参数值,查看AreaParameter获取可用的参数列表


  • area_get_shape area_get_shape(area: RID, shape_idx: int) const

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


  • area_get_shape_count area_get_shape_count(area: RID) const

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


  • area_get_shape_transform area_get_shape_transform(area: RID, shape_idx: int) const

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


  • area_get_space area_get_space(area: RID) const

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


  • area_get_space_override_mode area_get_space_override_mode(area: RID) const

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


  • area_get_transform area_get_transform(area: RID) const

返回区域的变换矩阵。


  • area_remove_shape area_remove_shape(area: RID, shape_idx: int)

从区域中移除形状,这不会真正的删除这些形状对象,所以它们还可以被赋值回来


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

  • area_set_collision_layer area_set_collision_layer(area: RID, layer: int)

将区域分配给一个或多个物理层。


  • area_set_collision_mask area_set_collision_mask(area: RID, mask: int)

设置区域将监视的物理层。


  • area_set_monitor_callback area_set_monitor_callback(area: RID, receiver: Object, method: String)

设置要在任何身体/区域进入或离开该区域时调用的函数,这个回调函数将在任何对象和这个区域发生作用时被调用,它有5个参数

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

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

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

4:进入/退出区域的对象的形状索引。

5:对象进入/退出的区域的形状索引。


  • area_set_monitorable area_set_monitorable(area: RID, monitorable: bool)

  • area_set_param area_set_param(area: RID, param: int, value: Variant)

设置区域参数的值,查看AreaParameter来获取可用的参数列表


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

用另一个区域形状替换给定的区域形状,通过索引来选取旧形状,通过RID来指定新的形状


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

禁用区域中的给定形状。


  • area_set_shape_transform area_set_shape_transform(area: RID, shape_idx: int, transform: Transform2D)

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


  • area_set_space area_set_space(area: RID, space: RID)

为该区域分配一个空间。


  • area_set_space_override_mode area_set_space_override_mode(area: RID, mode: int)

设置区域的空间覆盖模式,查看 AreaSpaceOverrideMode 来获取可用的模式列表


  • area_set_transform area_set_transform(area: RID, transform: Transform2D)

设置区域的变换矩阵。


  • body_add_central_force body_add_central_force(body: RID, force: Vector2)

  • body_add_collision_exception body_add_collision_exception(body: RID, excepted_body: RID)

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


  • body_add_force body_add_force(body: RID, offset: Vector2, force: Vector2)

将定位的力添加到所施加的力和扭矩上,正如 body_apply_impulse,实体源中的力和偏移都处于全局坐标下,因为一个力不同于一个脉冲,虽然两者都是力,但是脉冲在应用后会消除


  • body_add_shape body_add_shape(body: RID, shape: RID, transform: Transform2D = Transform2D( 1, 0, 0, 1, 0, 0 ), disabled: bool = false)

向实体添加形状以及变换矩阵。形状一般通过索引来指定,所以你可以根据索引值来查找具体的形状


  • body_add_torque body_add_torque(body: RID, torque: float)

  • body_apply_central_impulse body_apply_central_impulse(body: RID, impulse: Vector2)

  • body_apply_impulse body_apply_impulse(body: RID, position: Vector2, impulse: Vector2)

在施加的力和扭矩上添加定位脉冲,实体源中的力和偏移都处于全局坐标下


  • body_apply_torque_impulse body_apply_torque_impulse(body: RID, impulse: float)

  • body_attach_canvas_instance_id body_attach_canvas_instance_id(body: RID, id: int)

  • body_attach_object_instance_id body_attach_object_instance_id(body: RID, id: int)

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


  • body_clear_shapes body_clear_shapes(body: RID)

从实体中移除所有形状。


  • body_create body_create()

创建一个物理实体。


  • body_get_canvas_instance_id body_get_canvas_instance_id(body: RID) const

  • body_get_collision_layer body_get_collision_layer(body: RID) const

返回实体所属的一个或多个物理层。


  • body_get_collision_mask body_get_collision_mask(body: RID) const

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


  • body_get_continuous_collision_detection_mode body_get_continuous_collision_detection_mode(body: RID) const

返回连续碰撞检测模式。


  • body_get_direct_state body_get_direct_state(body: RID)

返回实体的Physics2DDirectBodyState


  • body_get_max_contacts_reported body_get_max_contacts_reported(body: RID) const

返回可以报告的最大联系人, body_set_max_contacts_reported.


  • body_get_mode body_get_mode(body: RID) const

返回实体模式。


  • body_get_object_instance_id body_get_object_instance_id(body: RID) const

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


  • body_get_param body_get_param(body: RID, param: int) const

返回body参数的值,查看 BodyParameter 获取可用的参数列表


  • body_get_shape body_get_shape(body: RID, shape_idx: int) const

返回主体的第n个形状的RID


  • body_get_shape_count body_get_shape_count(body: RID) const

返回分配给实体的形状数量。


  • body_get_shape_metadata body_get_shape_metadata(body: RID, shape_idx: int) const

返回身体形状的元数据。


  • body_get_shape_transform body_get_shape_transform(body: RID, shape_idx: int) const

返回身体形状的变换矩阵。


  • body_get_space body_get_space(body: RID) const

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


  • body_get_state body_get_state(body: RID, state: int) const

返回实体状态。


  • body_is_omitting_force_integration body_is_omitting_force_integration(body: RID) const

返回实体是否使用回调函数来计算其自身的物理特性(参见method_body_set_force_integration_callback(#method_body_set_force_integration_callback))。


  • body_remove_collision_exception body_remove_collision_exception(body: RID, excepted_body: RID)

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


  • body_remove_shape body_remove_shape(body: RID, shape_idx: int)

从实体中移除一个形状,被移除的形状并没有被删除,所以你还可以将它再赋值回来


  • body_set_axis_velocity body_set_axis_velocity(body: RID, axis_velocity: Vector2)

设置轴速度,这个给定向量轴的速度会被设置为给定的向量长度,这个设定对于“跳跃”的行为是很有帮助的


  • body_set_collision_layer body_set_collision_layer(body: RID, layer: int)

设置物体所属的一个或多个物理层。


  • body_set_collision_mask body_set_collision_mask(body: RID, mask: int)

设置物体可以碰撞的物理层。


  • body_set_continuous_collision_detection_mode body_set_continuous_collision_detection_mode(body: RID, mode: int)

使用CCDMode常量之一设置连续碰撞检测模式。

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


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

设置用于计算对象物理的函数(如果该对象允许的话)(参见method_body_set_omit_force_integration)。


  • body_set_max_contacts_reported body_set_max_contacts_reported(body: RID, amount: int)

设置要报告的最大联系人数量,实体会保持对于其他实体联系人的观察,这个设置要生效的话需要设置最大的amount参数大于0


  • body_set_mode body_set_mode(body: RID, mode: int)

使用BodyMode常量之一设置身体模式。


  • body_set_omit_force_integration body_set_omit_force_integration(body: RID, enable: bool)

设置物体是否使用回调函数来计算其自身的物理特性(参见method_body_set_force_integration_callback(#method_body_set_force_integration_callback))。


  • body_set_param body_set_param(body: RID, param: int, value: float)

设置实体参数,查看 BodyParameter 获取可用参数列表


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

用另一个替换给定的实体形状替换当前的实体形状,旧的形状通过索引来选择,新的形状通过RID来指定


  • body_set_shape_as_one_way_collision body_set_shape_as_one_way_collision(body: RID, shape_idx: int, enable: bool, margin: float)

如果enabletrue,则在实体上启用单向碰撞。


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

如果disabletrue,则禁用实体形状。


  • body_set_shape_metadata body_set_shape_metadata(body: RID, shape_idx: int, metadata: Variant)

设置实体形状的元数据,元数据和Object.set_meta不同,并且可以通过查询获取


  • body_set_shape_transform body_set_shape_transform(body: RID, shape_idx: int, transform: Transform2D)

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


  • body_set_space body_set_space(body: RID, space: RID)

为实体分配一个空间(请参见space_create)。


  • body_set_state body_set_state(body: RID, state: int, value: Variant)

使用BodyState常量之一设置实体状态。


  • body_test_motion body_test_motion(body: RID, from: Transform2D, motion: Vector2, infinite_inertia: bool, margin: float = 0.08, result: Physics2DTestMotionResult = null)

如果从空间中的给定点沿给定方向移动会导致碰撞,则返回true


  • capsule_shape_create capsule_shape_create()

  • circle_shape_create circle_shape_create()

  • concave_polygon_shape_create concave_polygon_shape_create()

  • convex_polygon_shape_create convex_polygon_shape_create()

  • damped_spring_joint_create damped_spring_joint_create(anchor_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID)

在两个实体之间创建阻尼弹簧接头,如果没有特别指定,那么第二个实体就假设为接头本身


  • damped_string_joint_get_param damped_string_joint_get_param(joint: RID, param: int) const

返回阻尼弹簧接头参数的值。


  • damped_string_joint_set_param damped_string_joint_set_param(joint: RID, param: int, value: float)

设置阻尼弹簧接头参数,查看 DampedStringParam 获取可用参数列表


  • free_rid free_rid(rid: RID)

销毁Physics2DServer创建的所有对象,如果传入的RID不是一个可以被Physics2DServer创建的对象,那么一个错误信息将会被发送到控制台


  • get_process_info get_process_info(process_info: int)

返回有关2D物理引擎当前状态的信息,查看 ProcessInfo 来获取可用的状态列表


  • groove_joint_create groove_joint_create(groove1_a: Vector2, groove2_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID)

在两个实体之间创建凹槽接头,如没有特殊指定,那么实体则假设为接头本身


  • joint_get_param joint_get_param(joint: RID, param: int) const

返回关节参数的值。


  • joint_get_type joint_get_type(joint: RID) const

返回关节的类型(参见[枚举JointType])。


  • joint_set_param joint_set_param(joint: RID, param: int, value: float)

设置关节参数,查看 JointParam 来获取可用的参数列表


  • line_shape_create line_shape_create()

  • pin_joint_create pin_joint_create(anchor: Vector2, body_a: RID, body_b: RID)

在两个实体之间创建铰链接头,如果没有特殊指定,那么第二个实体假设为接头本身


  • ray_shape_create ray_shape_create()

  • rectangle_shape_create rectangle_shape_create()

  • segment_shape_create segment_shape_create()

  • set_active set_active(active: bool)

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


  • shape_get_data shape_get_data(shape: RID) const

返回形状数据。


  • shape_get_type shape_get_type(shape: RID) const

返回形状的类型(参见ShapeType)。


  • shape_set_data shape_set_data(shape: RID, data: Variant)

设置定义其形状和大小的形状数据。传入的数据依靠某种形状来创建,参见 shape_get_type.


  • space_create space_create()

创建一个空间,空间指的是能够分配到物理引擎中实体或者区域的一组参数集合,它可以通过 area_set_space被赋值到区域,或者通过 body_set_space赋值到实体


  • space_get_direct_state space_get_direct_state(space: RID)

返回空间的状态,即Physics2DDirectSpaceState,这个对象可以被用于查询碰撞和相交


  • space_get_param space_get_param(space: RID, param: int) const

返回空格参数的值。


  • space_is_active space_is_active(space: RID) const

返回该空间是否处于活动状态。


  • space_set_active space_set_active(space: RID, active: bool)

将空间标记为活动空间,这并不会产生效果,除非这个空间已经被分配到了一个区域或者实体上


  • space_set_param space_set_param(space: RID, param: int, value: float)

设置空间参数的值,查看 SpaceParameter 来获取可用的参数列表