Files
godot-docs-l10n/classes/zh_Hans/class_physicsserver2d.rst

2636 lines
187 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_PhysicsServer2D:
PhysicsServer2D
===============
**继承:** :ref:`Object<class_Object>`
**派生:** :ref:`PhysicsServer2DExtension<class_PhysicsServer2DExtension>`
用于访问低阶 2D 物理的服务器接口。
.. rst-class:: classref-introduction-group
描述
----
PhysicsServer2D 是负责所有 2D 物理的服务器。它可以直接创建和操作所有物理对象:
- *Space空间*\ 是用于物理仿真的自包含世界。它包含实体、区域和关节。可以对其状态进行查询,获取碰撞和相交信息,并且可以修改部分仿真参数。
- *Shape形状*\ 是圆形、矩形、胶囊形、多边形等几何形状。加入到实体/区域中就可以用来进行碰撞检测,还可以带有相对于实体/区域原点的额外变换。实体/区域中可以添加多个(变换后的)形状,并且可以使用不同的局部变换将单个形状多次添加到实体/区域中。
- *Body实体*\ 是物理对象,可以处于静态、运动学或刚性模式。可以对其状态进行查询和更新(例如位置、速度等)。可以设置力的集成回调,自定义实体的物理特性。
- *Area区域*\ 是空间中的区块,可用于检测进入和离开它的实体和区域。可以设置实体的监视回调,报告进入/离开的实体形状,同样可以设置区域的监视回调。通过设置区域参数,可以在区域内覆盖重力和阻尼。
- *Joint关节*\ 是两个实体之间或一个实体相对于某个点的约束。可以调整关节偏置和弹簧关节的放松长度等参数。
\ **PhysicsServer2D** 中的物理对象可以独立创建和操作;不必将它们绑定到场景树中的节点。
\ **注意:**\ 所有 2D 物理节点都在内部使用这个物理服务器。将物理节点添加到场景树,就会导致在物理服务器中创建相应的物理对象。刚体节点会注册回调,该回调会(在每次物理更新时)使用物理服务器中相应实体对象的变换更新该节点的变换。区域节点会注册回调,用来通知区域节点与物理服务器中相应区域对象的重叠。射线投射节点会查询物理服务器中相关空间的直接状态。
.. rst-class:: classref-reftable-group
方法
----
.. table::
:widths: auto
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_add_shape<class_PhysicsServer2D_method_area_add_shape>`\ (\ area\: :ref:`RID<class_RID>`, shape\: :ref:`RID<class_RID>`, transform\: :ref:`Transform2D<class_Transform2D>` = Transform2D(1, 0, 0, 1, 0, 0), disabled\: :ref:`bool<class_bool>` = false\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_attach_canvas_instance_id<class_PhysicsServer2D_method_area_attach_canvas_instance_id>`\ (\ area\: :ref:`RID<class_RID>`, id\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_attach_object_instance_id<class_PhysicsServer2D_method_area_attach_object_instance_id>`\ (\ area\: :ref:`RID<class_RID>`, id\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_clear_shapes<class_PhysicsServer2D_method_area_clear_shapes>`\ (\ area\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`area_create<class_PhysicsServer2D_method_area_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`area_get_canvas_instance_id<class_PhysicsServer2D_method_area_get_canvas_instance_id>`\ (\ area\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`area_get_collision_layer<class_PhysicsServer2D_method_area_get_collision_layer>`\ (\ area\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`area_get_collision_mask<class_PhysicsServer2D_method_area_get_collision_mask>`\ (\ area\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`area_get_object_instance_id<class_PhysicsServer2D_method_area_get_object_instance_id>`\ (\ area\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Variant<class_Variant>` | :ref:`area_get_param<class_PhysicsServer2D_method_area_get_param>`\ (\ area\: :ref:`RID<class_RID>`, param\: :ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`area_get_shape<class_PhysicsServer2D_method_area_get_shape>`\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`area_get_shape_count<class_PhysicsServer2D_method_area_get_shape_count>`\ (\ area\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Transform2D<class_Transform2D>` | :ref:`area_get_shape_transform<class_PhysicsServer2D_method_area_get_shape_transform>`\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`area_get_space<class_PhysicsServer2D_method_area_get_space>`\ (\ area\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Transform2D<class_Transform2D>` | :ref:`area_get_transform<class_PhysicsServer2D_method_area_get_transform>`\ (\ area\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_remove_shape<class_PhysicsServer2D_method_area_remove_shape>`\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_area_monitor_callback<class_PhysicsServer2D_method_area_set_area_monitor_callback>`\ (\ area\: :ref:`RID<class_RID>`, callback\: :ref:`Callable<class_Callable>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_collision_layer<class_PhysicsServer2D_method_area_set_collision_layer>`\ (\ area\: :ref:`RID<class_RID>`, layer\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_collision_mask<class_PhysicsServer2D_method_area_set_collision_mask>`\ (\ area\: :ref:`RID<class_RID>`, mask\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_monitor_callback<class_PhysicsServer2D_method_area_set_monitor_callback>`\ (\ area\: :ref:`RID<class_RID>`, callback\: :ref:`Callable<class_Callable>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_monitorable<class_PhysicsServer2D_method_area_set_monitorable>`\ (\ area\: :ref:`RID<class_RID>`, monitorable\: :ref:`bool<class_bool>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_param<class_PhysicsServer2D_method_area_set_param>`\ (\ area\: :ref:`RID<class_RID>`, param\: :ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>`, value\: :ref:`Variant<class_Variant>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_shape<class_PhysicsServer2D_method_area_set_shape>`\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, shape\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_shape_disabled<class_PhysicsServer2D_method_area_set_shape_disabled>`\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, disabled\: :ref:`bool<class_bool>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_shape_transform<class_PhysicsServer2D_method_area_set_shape_transform>`\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, transform\: :ref:`Transform2D<class_Transform2D>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_space<class_PhysicsServer2D_method_area_set_space>`\ (\ area\: :ref:`RID<class_RID>`, space\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`area_set_transform<class_PhysicsServer2D_method_area_set_transform>`\ (\ area\: :ref:`RID<class_RID>`, transform\: :ref:`Transform2D<class_Transform2D>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_add_collision_exception<class_PhysicsServer2D_method_body_add_collision_exception>`\ (\ body\: :ref:`RID<class_RID>`, excepted_body\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_add_constant_central_force<class_PhysicsServer2D_method_body_add_constant_central_force>`\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_add_constant_force<class_PhysicsServer2D_method_body_add_constant_force>`\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_add_constant_torque<class_PhysicsServer2D_method_body_add_constant_torque>`\ (\ body\: :ref:`RID<class_RID>`, torque\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_add_shape<class_PhysicsServer2D_method_body_add_shape>`\ (\ body\: :ref:`RID<class_RID>`, shape\: :ref:`RID<class_RID>`, transform\: :ref:`Transform2D<class_Transform2D>` = Transform2D(1, 0, 0, 1, 0, 0), disabled\: :ref:`bool<class_bool>` = false\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_apply_central_force<class_PhysicsServer2D_method_body_apply_central_force>`\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_apply_central_impulse<class_PhysicsServer2D_method_body_apply_central_impulse>`\ (\ body\: :ref:`RID<class_RID>`, impulse\: :ref:`Vector2<class_Vector2>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_apply_force<class_PhysicsServer2D_method_body_apply_force>`\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_apply_impulse<class_PhysicsServer2D_method_body_apply_impulse>`\ (\ body\: :ref:`RID<class_RID>`, impulse\: :ref:`Vector2<class_Vector2>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_apply_torque<class_PhysicsServer2D_method_body_apply_torque>`\ (\ body\: :ref:`RID<class_RID>`, torque\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_apply_torque_impulse<class_PhysicsServer2D_method_body_apply_torque_impulse>`\ (\ body\: :ref:`RID<class_RID>`, impulse\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_attach_canvas_instance_id<class_PhysicsServer2D_method_body_attach_canvas_instance_id>`\ (\ body\: :ref:`RID<class_RID>`, id\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_attach_object_instance_id<class_PhysicsServer2D_method_body_attach_object_instance_id>`\ (\ body\: :ref:`RID<class_RID>`, id\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_clear_shapes<class_PhysicsServer2D_method_body_clear_shapes>`\ (\ body\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`body_create<class_PhysicsServer2D_method_body_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`body_get_canvas_instance_id<class_PhysicsServer2D_method_body_get_canvas_instance_id>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`body_get_collision_layer<class_PhysicsServer2D_method_body_get_collision_layer>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`body_get_collision_mask<class_PhysicsServer2D_method_body_get_collision_mask>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`float<class_float>` | :ref:`body_get_collision_priority<class_PhysicsServer2D_method_body_get_collision_priority>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2<class_Vector2>` | :ref:`body_get_constant_force<class_PhysicsServer2D_method_body_get_constant_force>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`float<class_float>` | :ref:`body_get_constant_torque<class_PhysicsServer2D_method_body_get_constant_torque>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`CCDMode<enum_PhysicsServer2D_CCDMode>` | :ref:`body_get_continuous_collision_detection_mode<class_PhysicsServer2D_method_body_get_continuous_collision_detection_mode>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PhysicsDirectBodyState2D<class_PhysicsDirectBodyState2D>` | :ref:`body_get_direct_state<class_PhysicsServer2D_method_body_get_direct_state>`\ (\ body\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`body_get_max_contacts_reported<class_PhysicsServer2D_method_body_get_max_contacts_reported>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`BodyMode<enum_PhysicsServer2D_BodyMode>` | :ref:`body_get_mode<class_PhysicsServer2D_method_body_get_mode>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`body_get_object_instance_id<class_PhysicsServer2D_method_body_get_object_instance_id>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Variant<class_Variant>` | :ref:`body_get_param<class_PhysicsServer2D_method_body_get_param>`\ (\ body\: :ref:`RID<class_RID>`, param\: :ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`body_get_shape<class_PhysicsServer2D_method_body_get_shape>`\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`body_get_shape_count<class_PhysicsServer2D_method_body_get_shape_count>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Transform2D<class_Transform2D>` | :ref:`body_get_shape_transform<class_PhysicsServer2D_method_body_get_shape_transform>`\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`body_get_space<class_PhysicsServer2D_method_body_get_space>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Variant<class_Variant>` | :ref:`body_get_state<class_PhysicsServer2D_method_body_get_state>`\ (\ body\: :ref:`RID<class_RID>`, state\: :ref:`BodyState<enum_PhysicsServer2D_BodyState>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`body_is_omitting_force_integration<class_PhysicsServer2D_method_body_is_omitting_force_integration>`\ (\ body\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_remove_collision_exception<class_PhysicsServer2D_method_body_remove_collision_exception>`\ (\ body\: :ref:`RID<class_RID>`, excepted_body\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_remove_shape<class_PhysicsServer2D_method_body_remove_shape>`\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_reset_mass_properties<class_PhysicsServer2D_method_body_reset_mass_properties>`\ (\ body\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_axis_velocity<class_PhysicsServer2D_method_body_set_axis_velocity>`\ (\ body\: :ref:`RID<class_RID>`, axis_velocity\: :ref:`Vector2<class_Vector2>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_collision_layer<class_PhysicsServer2D_method_body_set_collision_layer>`\ (\ body\: :ref:`RID<class_RID>`, layer\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_collision_mask<class_PhysicsServer2D_method_body_set_collision_mask>`\ (\ body\: :ref:`RID<class_RID>`, mask\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_collision_priority<class_PhysicsServer2D_method_body_set_collision_priority>`\ (\ body\: :ref:`RID<class_RID>`, priority\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_constant_force<class_PhysicsServer2D_method_body_set_constant_force>`\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_constant_torque<class_PhysicsServer2D_method_body_set_constant_torque>`\ (\ body\: :ref:`RID<class_RID>`, torque\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_continuous_collision_detection_mode<class_PhysicsServer2D_method_body_set_continuous_collision_detection_mode>`\ (\ body\: :ref:`RID<class_RID>`, mode\: :ref:`CCDMode<enum_PhysicsServer2D_CCDMode>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_force_integration_callback<class_PhysicsServer2D_method_body_set_force_integration_callback>`\ (\ body\: :ref:`RID<class_RID>`, callable\: :ref:`Callable<class_Callable>`, userdata\: :ref:`Variant<class_Variant>` = null\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_max_contacts_reported<class_PhysicsServer2D_method_body_set_max_contacts_reported>`\ (\ body\: :ref:`RID<class_RID>`, amount\: :ref:`int<class_int>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_mode<class_PhysicsServer2D_method_body_set_mode>`\ (\ body\: :ref:`RID<class_RID>`, mode\: :ref:`BodyMode<enum_PhysicsServer2D_BodyMode>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_omit_force_integration<class_PhysicsServer2D_method_body_set_omit_force_integration>`\ (\ body\: :ref:`RID<class_RID>`, enable\: :ref:`bool<class_bool>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_param<class_PhysicsServer2D_method_body_set_param>`\ (\ body\: :ref:`RID<class_RID>`, param\: :ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>`, value\: :ref:`Variant<class_Variant>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_shape<class_PhysicsServer2D_method_body_set_shape>`\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, shape\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_shape_as_one_way_collision<class_PhysicsServer2D_method_body_set_shape_as_one_way_collision>`\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`, margin\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_shape_disabled<class_PhysicsServer2D_method_body_set_shape_disabled>`\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, disabled\: :ref:`bool<class_bool>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_shape_transform<class_PhysicsServer2D_method_body_set_shape_transform>`\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, transform\: :ref:`Transform2D<class_Transform2D>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_space<class_PhysicsServer2D_method_body_set_space>`\ (\ body\: :ref:`RID<class_RID>`, space\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_state<class_PhysicsServer2D_method_body_set_state>`\ (\ body\: :ref:`RID<class_RID>`, state\: :ref:`BodyState<enum_PhysicsServer2D_BodyState>`, value\: :ref:`Variant<class_Variant>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`body_set_state_sync_callback<class_PhysicsServer2D_method_body_set_state_sync_callback>`\ (\ body\: :ref:`RID<class_RID>`, callable\: :ref:`Callable<class_Callable>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`body_test_motion<class_PhysicsServer2D_method_body_test_motion>`\ (\ body\: :ref:`RID<class_RID>`, parameters\: :ref:`PhysicsTestMotionParameters2D<class_PhysicsTestMotionParameters2D>`, result\: :ref:`PhysicsTestMotionResult2D<class_PhysicsTestMotionResult2D>` = null\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`capsule_shape_create<class_PhysicsServer2D_method_capsule_shape_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`circle_shape_create<class_PhysicsServer2D_method_circle_shape_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`concave_polygon_shape_create<class_PhysicsServer2D_method_concave_polygon_shape_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`convex_polygon_shape_create<class_PhysicsServer2D_method_convex_polygon_shape_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`float<class_float>` | :ref:`damped_spring_joint_get_param<class_PhysicsServer2D_method_damped_spring_joint_get_param>`\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`DampedSpringParam<enum_PhysicsServer2D_DampedSpringParam>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`damped_spring_joint_set_param<class_PhysicsServer2D_method_damped_spring_joint_set_param>`\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`DampedSpringParam<enum_PhysicsServer2D_DampedSpringParam>`, value\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`free_rid<class_PhysicsServer2D_method_free_rid>`\ (\ rid\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_process_info<class_PhysicsServer2D_method_get_process_info>`\ (\ process_info\: :ref:`ProcessInfo<enum_PhysicsServer2D_ProcessInfo>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`joint_clear<class_PhysicsServer2D_method_joint_clear>`\ (\ joint\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`joint_create<class_PhysicsServer2D_method_joint_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`joint_disable_collisions_between_bodies<class_PhysicsServer2D_method_joint_disable_collisions_between_bodies>`\ (\ joint\: :ref:`RID<class_RID>`, disable\: :ref:`bool<class_bool>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`float<class_float>` | :ref:`joint_get_param<class_PhysicsServer2D_method_joint_get_param>`\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`JointParam<enum_PhysicsServer2D_JointParam>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`JointType<enum_PhysicsServer2D_JointType>` | :ref:`joint_get_type<class_PhysicsServer2D_method_joint_get_type>`\ (\ joint\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`joint_is_disabled_collisions_between_bodies<class_PhysicsServer2D_method_joint_is_disabled_collisions_between_bodies>`\ (\ joint\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`joint_make_damped_spring<class_PhysicsServer2D_method_joint_make_damped_spring>`\ (\ joint\: :ref:`RID<class_RID>`, anchor_a\: :ref:`Vector2<class_Vector2>`, anchor_b\: :ref:`Vector2<class_Vector2>`, body_a\: :ref:`RID<class_RID>`, body_b\: :ref:`RID<class_RID>` = RID()\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`joint_make_groove<class_PhysicsServer2D_method_joint_make_groove>`\ (\ joint\: :ref:`RID<class_RID>`, groove1_a\: :ref:`Vector2<class_Vector2>`, groove2_a\: :ref:`Vector2<class_Vector2>`, anchor_b\: :ref:`Vector2<class_Vector2>`, body_a\: :ref:`RID<class_RID>` = RID(), body_b\: :ref:`RID<class_RID>` = RID()\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`joint_make_pin<class_PhysicsServer2D_method_joint_make_pin>`\ (\ joint\: :ref:`RID<class_RID>`, anchor\: :ref:`Vector2<class_Vector2>`, body_a\: :ref:`RID<class_RID>`, body_b\: :ref:`RID<class_RID>` = RID()\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`joint_set_param<class_PhysicsServer2D_method_joint_set_param>`\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`JointParam<enum_PhysicsServer2D_JointParam>`, value\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`pin_joint_get_flag<class_PhysicsServer2D_method_pin_joint_get_flag>`\ (\ joint\: :ref:`RID<class_RID>`, flag\: :ref:`PinJointFlag<enum_PhysicsServer2D_PinJointFlag>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`float<class_float>` | :ref:`pin_joint_get_param<class_PhysicsServer2D_method_pin_joint_get_param>`\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`pin_joint_set_flag<class_PhysicsServer2D_method_pin_joint_set_flag>`\ (\ joint\: :ref:`RID<class_RID>`, flag\: :ref:`PinJointFlag<enum_PhysicsServer2D_PinJointFlag>`, enabled\: :ref:`bool<class_bool>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`pin_joint_set_param<class_PhysicsServer2D_method_pin_joint_set_param>`\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>`, value\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`rectangle_shape_create<class_PhysicsServer2D_method_rectangle_shape_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`segment_shape_create<class_PhysicsServer2D_method_segment_shape_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`separation_ray_shape_create<class_PhysicsServer2D_method_separation_ray_shape_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_active<class_PhysicsServer2D_method_set_active>`\ (\ active\: :ref:`bool<class_bool>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Variant<class_Variant>` | :ref:`shape_get_data<class_PhysicsServer2D_method_shape_get_data>`\ (\ shape\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` | :ref:`shape_get_type<class_PhysicsServer2D_method_shape_get_type>`\ (\ shape\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`shape_set_data<class_PhysicsServer2D_method_shape_set_data>`\ (\ shape\: :ref:`RID<class_RID>`, data\: :ref:`Variant<class_Variant>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`space_create<class_PhysicsServer2D_method_space_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PhysicsDirectSpaceState2D<class_PhysicsDirectSpaceState2D>` | :ref:`space_get_direct_state<class_PhysicsServer2D_method_space_get_direct_state>`\ (\ space\: :ref:`RID<class_RID>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`float<class_float>` | :ref:`space_get_param<class_PhysicsServer2D_method_space_get_param>`\ (\ space\: :ref:`RID<class_RID>`, param\: :ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`space_is_active<class_PhysicsServer2D_method_space_is_active>`\ (\ space\: :ref:`RID<class_RID>`\ ) |const| |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`space_set_active<class_PhysicsServer2D_method_space_set_active>`\ (\ space\: :ref:`RID<class_RID>`, active\: :ref:`bool<class_bool>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`space_set_param<class_PhysicsServer2D_method_space_set_param>`\ (\ space\: :ref:`RID<class_RID>`, param\: :ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>`, value\: :ref:`float<class_float>`\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`world_boundary_shape_create<class_PhysicsServer2D_method_world_boundary_shape_create>`\ (\ ) |
+-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
枚举
----
.. _enum_PhysicsServer2D_SpaceParameter:
.. rst-class:: classref-enumeration
enum **SpaceParameter**: :ref:`🔗<enum_PhysicsServer2D_SpaceParameter>`
.. _class_PhysicsServer2D_constant_SPACE_PARAM_CONTACT_RECYCLE_RADIUS:
.. rst-class:: classref-enumeration-constant
:ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` **SPACE_PARAM_CONTACT_RECYCLE_RADIUS** = ``0``
常量,用于设置/获取一对物体在其碰撞状态被重新计算之前的最大移动距离。该参数的默认值为 :ref:`ProjectSettings.physics/2d/solver/contact_recycle_radius<class_ProjectSettings_property_physics/2d/solver/contact_recycle_radius>`\ 。
.. _class_PhysicsServer2D_constant_SPACE_PARAM_CONTACT_MAX_SEPARATION:
.. rst-class:: classref-enumeration-constant
:ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` **SPACE_PARAM_CONTACT_MAX_SEPARATION** = ``1``
常量,用于设置/获取两个形状间的最大距离,超过该距离后它们将被视为分离,接触将被弃置。该参数的默认值为 :ref:`ProjectSettings.physics/2d/solver/contact_max_separation<class_ProjectSettings_property_physics/2d/solver/contact_max_separation>`\ 。
.. _class_PhysicsServer2D_constant_SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION:
.. rst-class:: classref-enumeration-constant
:ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` **SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION** = ``2``
常量,用于设置/获取两个形状互相穿透的最大距离,超过该距离后将视为碰撞。该参数的默认值为 :ref:`ProjectSettings.physics/2d/solver/contact_max_allowed_penetration<class_ProjectSettings_property_physics/2d/solver/contact_max_allowed_penetration>`\ 。
.. _class_PhysicsServer2D_constant_SPACE_PARAM_CONTACT_DEFAULT_BIAS:
.. rst-class:: classref-enumeration-constant
:ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` **SPACE_PARAM_CONTACT_DEFAULT_BIAS** = ``3``
常量,用于设置/获取所有物理接触的默认求解器偏差。求解器偏差是控制两个对象在重叠后“反弹”的程度的一个系数,以避免由于数值不精确而使它们处于该状态。该参数的默认值为 :ref:`ProjectSettings.physics/2d/solver/default_contact_bias<class_ProjectSettings_property_physics/2d/solver/default_contact_bias>`\ 。
.. _class_PhysicsServer2D_constant_SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD:
.. rst-class:: classref-enumeration-constant
:ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` **SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD** = ``4``
常量,用于设置/获取活跃的阈值线速度。一个线性速度和角速度都被标记为可能处于非活动状态的物体,将在给定时间后进入睡眠状态。该参数的默认值为 :ref:`ProjectSettings.physics/2d/sleep_threshold_linear<class_ProjectSettings_property_physics/2d/sleep_threshold_linear>`\ 。
.. _class_PhysicsServer2D_constant_SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD:
.. rst-class:: classref-enumeration-constant
:ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` **SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD** = ``5``
常量,用于设置/获取活跃的阈值角速度。一个线性速度和角速度都被标记为可能处于非活动状态的物体,将在给定时间后进入睡眠状态。该参数的默认值为 :ref:`ProjectSettings.physics/2d/sleep_threshold_angular<class_ProjectSettings_property_physics/2d/sleep_threshold_angular>`\ 。
.. _class_PhysicsServer2D_constant_SPACE_PARAM_BODY_TIME_TO_SLEEP:
.. rst-class:: classref-enumeration-constant
:ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` **SPACE_PARAM_BODY_TIME_TO_SLEEP** = ``6``
常量,用于设置/获得最大的活动时间。一个被标记为线速度和角速度都可能不活动的物体,在这个时间之后将被置入睡眠状态。
.. _class_PhysicsServer2D_constant_SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS:
.. rst-class:: classref-enumeration-constant
:ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` **SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS** = ``7``
常量,用于设置/获取所有物理约束的默认求解器偏差。求解器偏差是控制两个对象在违反约束后“反弹”的程度的一个系数,以避免由于数值不精确而使它们处于该状态。该参数的默认值为 :ref:`ProjectSettings.physics/2d/solver/default_constraint_bias<class_ProjectSettings_property_physics/2d/solver/default_constraint_bias>`\ 。
.. _class_PhysicsServer2D_constant_SPACE_PARAM_SOLVER_ITERATIONS:
.. rst-class:: classref-enumeration-constant
:ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` **SPACE_PARAM_SOLVER_ITERATIONS** = ``8``
常量,用于设置/获取所有接触与约束的求解器迭代数。迭代次数越多,碰撞越准确。但是,大量的迭代会需要更多的 CPU 能力,会降低性能。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_ShapeType:
.. rst-class:: classref-enumeration
enum **ShapeType**: :ref:`🔗<enum_PhysicsServer2D_ShapeType>`
.. _class_PhysicsServer2D_constant_SHAPE_WORLD_BOUNDARY:
.. rst-class:: classref-enumeration-constant
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **SHAPE_WORLD_BOUNDARY** = ``0``
常量,用于创建世界边界形状。一个世界边界形状,是具有原点和法线的\ *无限*\ 直线。因此,它可以用于前面/背面检查。
.. _class_PhysicsServer2D_constant_SHAPE_SEPARATION_RAY:
.. rst-class:: classref-enumeration-constant
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **SHAPE_SEPARATION_RAY** = ``1``
常量,用于创建分离射线形状。一条分离射线由一个长度定义,并将其自身与接触其远端点的物体分开。对角色控制器很有用。
.. _class_PhysicsServer2D_constant_SHAPE_SEGMENT:
.. rst-class:: classref-enumeration-constant
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **SHAPE_SEGMENT** = ``2``
常量,用于创建线段形状。一条线段形状是从点 A 到点 B 的\ *有限*\ 线段。可以用于检查交叉点。
.. _class_PhysicsServer2D_constant_SHAPE_CIRCLE:
.. rst-class:: classref-enumeration-constant
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **SHAPE_CIRCLE** = ``3``
这是创建圆形的常量。一个圆的形状只有一个半径。它可以用于交点和内/外侧检查。
.. _class_PhysicsServer2D_constant_SHAPE_RECTANGLE:
.. rst-class:: classref-enumeration-constant
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **SHAPE_RECTANGLE** = ``4``
这是用于创建矩形形状的常量。矩形形状是由宽度和高度定义的。它可以用于交点和内/外侧检查。
.. _class_PhysicsServer2D_constant_SHAPE_CAPSULE:
.. rst-class:: classref-enumeration-constant
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **SHAPE_CAPSULE** = ``5``
这是创建胶囊形状的常量。一个胶囊形状由一个半径和一个长度定义。它可以用于交点和内/外侧检查。
.. _class_PhysicsServer2D_constant_SHAPE_CONVEX_POLYGON:
.. rst-class:: classref-enumeration-constant
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **SHAPE_CONVEX_POLYGON** = ``6``
常量,用于创建凸多边形形状。一个多边形是由一个点的列表定义的。它可以用于交叉点和内侧/外侧检查。
.. _class_PhysicsServer2D_constant_SHAPE_CONCAVE_POLYGON:
.. rst-class:: classref-enumeration-constant
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **SHAPE_CONCAVE_POLYGON** = ``7``
这是创建凹形多边形的常量。一个多边形是由一个点的列表定义的。它可以用于交叉点检查,但不能用于内/外侧检查。
.. _class_PhysicsServer2D_constant_SHAPE_CUSTOM:
.. rst-class:: classref-enumeration-constant
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **SHAPE_CUSTOM** = ``8``
引擎内部会使用这个常量。任何试图创建这种形状的行为都会导致错误。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_AreaParameter:
.. rst-class:: classref-enumeration
enum **AreaParameter**: :ref:`🔗<enum_PhysicsServer2D_AreaParameter>`
.. _class_PhysicsServer2D_constant_AREA_PARAM_GRAVITY_OVERRIDE_MODE:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_GRAVITY_OVERRIDE_MODE** = ``0``
常量,在一个区域中设置/获取重力覆盖模式。有关可能的值,请参阅 :ref:`AreaSpaceOverrideMode<enum_PhysicsServer2D_AreaSpaceOverrideMode>`\ 。这个参数的默认值是 :ref:`AREA_SPACE_OVERRIDE_DISABLED<class_PhysicsServer2D_constant_AREA_SPACE_OVERRIDE_DISABLED>`\ 。
.. _class_PhysicsServer2D_constant_AREA_PARAM_GRAVITY:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_GRAVITY** = ``1``
常量,用于设置/获取区域中的重力强度。该参数的默认值为 ``9.80665``\ 。
.. _class_PhysicsServer2D_constant_AREA_PARAM_GRAVITY_VECTOR:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_GRAVITY_VECTOR** = ``2``
常量,用于设置/获取区域中的重力向量/中心。该参数的默认值为 ``Vector2(0, -1)``\ 。
.. _class_PhysicsServer2D_constant_AREA_PARAM_GRAVITY_IS_POINT:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_GRAVITY_IS_POINT** = ``3``
常量,用于设置/获取区域中的重力向量是方向,还是中心点。该参数的默认值为 ``false``\ 。
.. _class_PhysicsServer2D_constant_AREA_PARAM_GRAVITY_POINT_UNIT_DISTANCE:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_GRAVITY_POINT_UNIT_DISTANCE** = ``4``
常量,用于设置/获取重力强度等于 :ref:`AREA_PARAM_GRAVITY<class_PhysicsServer2D_constant_AREA_PARAM_GRAVITY>` 控制的重力的距离。例如,在一个半径为 100 像素且表面重力为 4.0 px/s² 的行星上,将重力设置为 4.0,将单位距离设置为 100.0。重力将根据平方反比定律衰减,因此在该示例中,距离中心 200 像素处的重力将为 1.0 px/s²距离的两倍重力的 1/4距离中心 50 像素处重力为 16.0 px/s²距离的一半重力的 4 倍),依此类推。
仅当单位距离为正数时,上述情况才成立。当单位距离设置为 0.0 时,重力将与距离无关。该参数的默认值为 ``0.0``\ 。
.. _class_PhysicsServer2D_constant_AREA_PARAM_LINEAR_DAMP_OVERRIDE_MODE:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_LINEAR_DAMP_OVERRIDE_MODE** = ``5``
常量,用于在一个区域中设置/获取线性阻尼覆盖模式。有关可能的值,请参阅 :ref:`AreaSpaceOverrideMode<enum_PhysicsServer2D_AreaSpaceOverrideMode>`\ 。这个参数的默认值是 :ref:`AREA_SPACE_OVERRIDE_DISABLED<class_PhysicsServer2D_constant_AREA_SPACE_OVERRIDE_DISABLED>`\ 。
.. _class_PhysicsServer2D_constant_AREA_PARAM_LINEAR_DAMP:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_LINEAR_DAMP** = ``6``
常数,用于设置/获取区域的线性阻尼系数。该参数的默认值为 ``0.1``\ 。
.. _class_PhysicsServer2D_constant_AREA_PARAM_ANGULAR_DAMP_OVERRIDE_MODE:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_ANGULAR_DAMP_OVERRIDE_MODE** = ``7``
常量,用于在一个区域中设置/获取角度阻尼覆盖模式。有关可能的值,请参阅 :ref:`AreaSpaceOverrideMode<enum_PhysicsServer2D_AreaSpaceOverrideMode>`\ 。这个参数的默认值是 :ref:`AREA_SPACE_OVERRIDE_DISABLED<class_PhysicsServer2D_constant_AREA_SPACE_OVERRIDE_DISABLED>`\ 。
.. _class_PhysicsServer2D_constant_AREA_PARAM_ANGULAR_DAMP:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_ANGULAR_DAMP** = ``8``
常数,用于设置/获取区域的角度阻尼系数。该参数的默认值为 ``1.0``\ 。
.. _class_PhysicsServer2D_constant_AREA_PARAM_PRIORITY:
.. rst-class:: classref-enumeration-constant
:ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` **AREA_PARAM_PRIORITY** = ``9``
常量,用于设置/获取区域的优先级(处理顺序)。该参数的默认值为 ``0``\ 。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_AreaSpaceOverrideMode:
.. rst-class:: classref-enumeration
enum **AreaSpaceOverrideMode**: :ref:`🔗<enum_PhysicsServer2D_AreaSpaceOverrideMode>`
.. _class_PhysicsServer2D_constant_AREA_SPACE_OVERRIDE_DISABLED:
.. rst-class:: classref-enumeration-constant
:ref:`AreaSpaceOverrideMode<enum_PhysicsServer2D_AreaSpaceOverrideMode>` **AREA_SPACE_OVERRIDE_DISABLED** = ``0``
该区域不影响重力/阻尼。这些区域的存在通常只是为了检测碰撞、以及物体是否进入或离开它们。
.. _class_PhysicsServer2D_constant_AREA_SPACE_OVERRIDE_COMBINE:
.. rst-class:: classref-enumeration-constant
:ref:`AreaSpaceOverrideMode<enum_PhysicsServer2D_AreaSpaceOverrideMode>` **AREA_SPACE_OVERRIDE_COMBINE** = ``1``
该区域将其重力/阻尼值加到目前已经计算出的结果上。这样一来,许多重叠的区域可以结合它们的物理运算来创建有趣的效果。
.. _class_PhysicsServer2D_constant_AREA_SPACE_OVERRIDE_COMBINE_REPLACE:
.. rst-class:: classref-enumeration-constant
:ref:`AreaSpaceOverrideMode<enum_PhysicsServer2D_AreaSpaceOverrideMode>` **AREA_SPACE_OVERRIDE_COMBINE_REPLACE** = ``2``
该区域将其重力/阻尼值加到目前已经计算出的结果上。然后停止考虑其余区域,甚至是默认区域。
.. _class_PhysicsServer2D_constant_AREA_SPACE_OVERRIDE_REPLACE:
.. rst-class:: classref-enumeration-constant
:ref:`AreaSpaceOverrideMode<enum_PhysicsServer2D_AreaSpaceOverrideMode>` **AREA_SPACE_OVERRIDE_REPLACE** = ``3``
该区域将替换所有重力/阻尼,甚至是默认值,并停止考虑其余区域。
.. _class_PhysicsServer2D_constant_AREA_SPACE_OVERRIDE_REPLACE_COMBINE:
.. rst-class:: classref-enumeration-constant
:ref:`AreaSpaceOverrideMode<enum_PhysicsServer2D_AreaSpaceOverrideMode>` **AREA_SPACE_OVERRIDE_REPLACE_COMBINE** = ``4``
该区域将替换目前已经计算出的任何重力/阻尼,但仍将继续计算其余区域,直到默认区域。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_BodyMode:
.. rst-class:: classref-enumeration
enum **BodyMode**: :ref:`🔗<enum_PhysicsServer2D_BodyMode>`
.. _class_PhysicsServer2D_constant_BODY_MODE_STATIC:
.. rst-class:: classref-enumeration-constant
:ref:`BodyMode<enum_PhysicsServer2D_BodyMode>` **BODY_MODE_STATIC** = ``0``
常量,用于静态物体。在这种模式下,物体只能由用户代码移动,移动时不会与路径上的其他物体发生碰撞。
.. _class_PhysicsServer2D_constant_BODY_MODE_KINEMATIC:
.. rst-class:: classref-enumeration-constant
:ref:`BodyMode<enum_PhysicsServer2D_BodyMode>` **BODY_MODE_KINEMATIC** = ``1``
常量,用于运动学物体。在这种模式下,物体只能由用户代码移动,会与路径上的其他物体发生碰撞。
.. _class_PhysicsServer2D_constant_BODY_MODE_RIGID:
.. rst-class:: classref-enumeration-constant
:ref:`BodyMode<enum_PhysicsServer2D_BodyMode>` **BODY_MODE_RIGID** = ``2``
常量,用于刚体。在这种模式下,物体可以被其他物体推动,能够对其施加力。
.. _class_PhysicsServer2D_constant_BODY_MODE_RIGID_LINEAR:
.. rst-class:: classref-enumeration-constant
:ref:`BodyMode<enum_PhysicsServer2D_BodyMode>` **BODY_MODE_RIGID_LINEAR** = ``3``
常量,用于线性刚体。在这种模式下,物体不能旋转,只有线速度受外力影响。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_BodyParameter:
.. rst-class:: classref-enumeration
enum **BodyParameter**: :ref:`🔗<enum_PhysicsServer2D_BodyParameter>`
.. _class_PhysicsServer2D_constant_BODY_PARAM_BOUNCE:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_BOUNCE** = ``0``
常量,用于设置/获取物体的反弹系数。该参数的默认值为 ``0.0``\ 。
.. _class_PhysicsServer2D_constant_BODY_PARAM_FRICTION:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_FRICTION** = ``1``
常量,用于设置/获取物体的摩擦力。该参数的默认值为 ``1.0``\ 。
.. _class_PhysicsServer2D_constant_BODY_PARAM_MASS:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_MASS** = ``2``
常量,用于设置/获取物体的质量。该参数的默认值为\ ``1.0``\ 。如果该物体的模式被设置为 :ref:`BODY_MODE_RIGID<class_PhysicsServer2D_constant_BODY_MODE_RIGID>`\ ,那么设置这个参数会有以下额外效果:
- 如果参数 :ref:`BODY_PARAM_CENTER_OF_MASS<class_PhysicsServer2D_constant_BODY_PARAM_CENTER_OF_MASS>` 尚未被明确设置,则该参数的值将根据物体的形状重新计算。
- 如果参数 :ref:`BODY_PARAM_INERTIA<class_PhysicsServer2D_constant_BODY_PARAM_INERTIA>` 被设置为 ``<= 0.0``\ ,则该参数的值将根据该物体的形状、质量和质心重新计算。
.. _class_PhysicsServer2D_constant_BODY_PARAM_INERTIA:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_INERTIA** = ``3``
常量,用于设置/获取物体的惯性。该参数的默认值为 ``0.0``\ 。如果物体的惯性被设置为 ``<= 0.0``\ ,则惯性将根据该物体的形状、质量和质心重新计算。
.. _class_PhysicsServer2D_constant_BODY_PARAM_CENTER_OF_MASS:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_CENTER_OF_MASS** = ``4``
常量,用于在物体局部坐标系中设置/获取该物体的质心位置。该参数的默认值为 ``Vector2(0, 0)``\ 。如果该参数从未明确设置,则在设置参数 :ref:`BODY_PARAM_MASS<class_PhysicsServer2D_constant_BODY_PARAM_MASS>` 或调用 :ref:`body_set_space()<class_PhysicsServer2D_method_body_set_space>` 时,会根据物体的形状重新计算。
.. _class_PhysicsServer2D_constant_BODY_PARAM_GRAVITY_SCALE:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_GRAVITY_SCALE** = ``5``
常量,用于设置/获取物体的重力倍数。该参数的默认值为 ``1.0``\ 。
.. _class_PhysicsServer2D_constant_BODY_PARAM_LINEAR_DAMP_MODE:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_LINEAR_DAMP_MODE** = ``6``
常量,用于设置/获取物体的线性阻尼模式。可能的值见 :ref:`BodyDampMode<enum_PhysicsServer2D_BodyDampMode>`\ 。这个参数的默认值为 :ref:`BODY_DAMP_MODE_COMBINE<class_PhysicsServer2D_constant_BODY_DAMP_MODE_COMBINE>`\ 。
.. _class_PhysicsServer2D_constant_BODY_PARAM_ANGULAR_DAMP_MODE:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_ANGULAR_DAMP_MODE** = ``7``
常量,用于设置/获取物体的角度阻尼模式。可能的值见 :ref:`BodyDampMode<enum_PhysicsServer2D_BodyDampMode>`\ 。这个参数的默认值为 :ref:`BODY_DAMP_MODE_COMBINE<class_PhysicsServer2D_constant_BODY_DAMP_MODE_COMBINE>`\ 。
.. _class_PhysicsServer2D_constant_BODY_PARAM_LINEAR_DAMP:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_LINEAR_DAMP** = ``8``
常量,用于设置/获取物体的线性阻尼系数。该参数的默认值为 ``0.0``\ 。
.. _class_PhysicsServer2D_constant_BODY_PARAM_ANGULAR_DAMP:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_ANGULAR_DAMP** = ``9``
常量,用于设置/获取物体的角度阻尼系数。该参数的默认值为 ``0.0``\ 。
.. _class_PhysicsServer2D_constant_BODY_PARAM_MAX:
.. rst-class:: classref-enumeration-constant
:ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` **BODY_PARAM_MAX** = ``10``
代表 :ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` 枚举的大小。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_BodyDampMode:
.. rst-class:: classref-enumeration
enum **BodyDampMode**: :ref:`🔗<enum_PhysicsServer2D_BodyDampMode>`
.. _class_PhysicsServer2D_constant_BODY_DAMP_MODE_COMBINE:
.. rst-class:: classref-enumeration-constant
:ref:`BodyDampMode<enum_PhysicsServer2D_BodyDampMode>` **BODY_DAMP_MODE_COMBINE** = ``0``
物体的阻尼值将被加到区域中所设置的值或默认值上。
.. _class_PhysicsServer2D_constant_BODY_DAMP_MODE_REPLACE:
.. rst-class:: classref-enumeration-constant
:ref:`BodyDampMode<enum_PhysicsServer2D_BodyDampMode>` **BODY_DAMP_MODE_REPLACE** = ``1``
物体的阻尼值会替换区域中所设置的值或默认值。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_BodyState:
.. rst-class:: classref-enumeration
enum **BodyState**: :ref:`🔗<enum_PhysicsServer2D_BodyState>`
.. _class_PhysicsServer2D_constant_BODY_STATE_TRANSFORM:
.. rst-class:: classref-enumeration-constant
:ref:`BodyState<enum_PhysicsServer2D_BodyState>` **BODY_STATE_TRANSFORM** = ``0``
常量,用于设置/获取物体的当前变换矩阵。
.. _class_PhysicsServer2D_constant_BODY_STATE_LINEAR_VELOCITY:
.. rst-class:: classref-enumeration-constant
:ref:`BodyState<enum_PhysicsServer2D_BodyState>` **BODY_STATE_LINEAR_VELOCITY** = ``1``
常量,用于设置/获取物体的当前线速度。
.. _class_PhysicsServer2D_constant_BODY_STATE_ANGULAR_VELOCITY:
.. rst-class:: classref-enumeration-constant
:ref:`BodyState<enum_PhysicsServer2D_BodyState>` **BODY_STATE_ANGULAR_VELOCITY** = ``2``
常量,用于设置/获取物体的当前角速度。
.. _class_PhysicsServer2D_constant_BODY_STATE_SLEEPING:
.. rst-class:: classref-enumeration-constant
:ref:`BodyState<enum_PhysicsServer2D_BodyState>` **BODY_STATE_SLEEPING** = ``3``
常量,用于使物体沉睡/唤醒,或得到它是否在沉睡。
.. _class_PhysicsServer2D_constant_BODY_STATE_CAN_SLEEP:
.. rst-class:: classref-enumeration-constant
:ref:`BodyState<enum_PhysicsServer2D_BodyState>` **BODY_STATE_CAN_SLEEP** = ``4``
常量,用于设置/获取物体是否可以休眠。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_JointType:
.. rst-class:: classref-enumeration
enum **JointType**: :ref:`🔗<enum_PhysicsServer2D_JointType>`
.. _class_PhysicsServer2D_constant_JOINT_TYPE_PIN:
.. rst-class:: classref-enumeration-constant
:ref:`JointType<enum_PhysicsServer2D_JointType>` **JOINT_TYPE_PIN** = ``0``
常量,用于创造销关节。
.. _class_PhysicsServer2D_constant_JOINT_TYPE_GROOVE:
.. rst-class:: classref-enumeration-constant
:ref:`JointType<enum_PhysicsServer2D_JointType>` **JOINT_TYPE_GROOVE** = ``1``
常量,用于创造槽关节。
.. _class_PhysicsServer2D_constant_JOINT_TYPE_DAMPED_SPRING:
.. rst-class:: classref-enumeration-constant
:ref:`JointType<enum_PhysicsServer2D_JointType>` **JOINT_TYPE_DAMPED_SPRING** = ``2``
常量,用于创造有阻尼的弹簧关节。
.. _class_PhysicsServer2D_constant_JOINT_TYPE_MAX:
.. rst-class:: classref-enumeration-constant
:ref:`JointType<enum_PhysicsServer2D_JointType>` **JOINT_TYPE_MAX** = ``3``
代表 :ref:`JointType<enum_PhysicsServer2D_JointType>` 枚举的大小。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_JointParam:
.. rst-class:: classref-enumeration
enum **JointParam**: :ref:`🔗<enum_PhysicsServer2D_JointParam>`
.. _class_PhysicsServer2D_constant_JOINT_PARAM_BIAS:
.. rst-class:: classref-enumeration-constant
:ref:`JointParam<enum_PhysicsServer2D_JointParam>` **JOINT_PARAM_BIAS** = ``0``
常量,用于设置/获取该关节将实体拉回以满足关节约束的速度。值越低,两个物体对关节的拉动就越大。该参数的默认值为 ``0.0``\ 。
\ **注意:**\ 在 Godot 物理中,这个参数只用于销关节和槽关节。
.. _class_PhysicsServer2D_constant_JOINT_PARAM_MAX_BIAS:
.. rst-class:: classref-enumeration-constant
:ref:`JointParam<enum_PhysicsServer2D_JointParam>` **JOINT_PARAM_MAX_BIAS** = ``1``
常量,用于设置/获取关节可以应用校正的最大速度。该参数的默认值为 ``3.40282e+38``\ 。
\ **注意:**\ 在 Godot 物理中,这个参数只用于槽关节。
.. _class_PhysicsServer2D_constant_JOINT_PARAM_MAX_FORCE:
.. rst-class:: classref-enumeration-constant
:ref:`JointParam<enum_PhysicsServer2D_JointParam>` **JOINT_PARAM_MAX_FORCE** = ``2``
常量,用于设置/获取关节可用于作用于两个实体的最大力。该参数的默认值为 ``3.40282e+38``\ 。
\ **注意:**\ 在 Godot 物理中,这个参数只用于槽关节。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_PinJointParam:
.. rst-class:: classref-enumeration
enum **PinJointParam**: :ref:`🔗<enum_PhysicsServer2D_PinJointParam>`
.. _class_PhysicsServer2D_constant_PIN_JOINT_SOFTNESS:
.. rst-class:: classref-enumeration-constant
:ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>` **PIN_JOINT_SOFTNESS** = ``0``
常量,用于设置/获取销关节的纽带可以弯曲多少。该参数的默认值为 ``0.0``\ 。
.. _class_PhysicsServer2D_constant_PIN_JOINT_LIMIT_UPPER:
.. rst-class:: classref-enumeration-constant
:ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>` **PIN_JOINT_LIMIT_UPPER** = ``1``
绕该销的最大旋转。
.. _class_PhysicsServer2D_constant_PIN_JOINT_LIMIT_LOWER:
.. rst-class:: classref-enumeration-constant
:ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>` **PIN_JOINT_LIMIT_LOWER** = ``2``
绕该销的最小旋转。
.. _class_PhysicsServer2D_constant_PIN_JOINT_MOTOR_TARGET_VELOCITY:
.. rst-class:: classref-enumeration-constant
:ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>` **PIN_JOINT_MOTOR_TARGET_VELOCITY** = ``3``
马达的目标速度。单位为弧度每秒。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_PinJointFlag:
.. rst-class:: classref-enumeration
enum **PinJointFlag**: :ref:`🔗<enum_PhysicsServer2D_PinJointFlag>`
.. _class_PhysicsServer2D_constant_PIN_JOINT_FLAG_ANGULAR_LIMIT_ENABLED:
.. rst-class:: classref-enumeration-constant
:ref:`PinJointFlag<enum_PhysicsServer2D_PinJointFlag>` **PIN_JOINT_FLAG_ANGULAR_LIMIT_ENABLED** = ``0``
如果为 ``true``\ ,则销关节具有最大和最小旋转。
.. _class_PhysicsServer2D_constant_PIN_JOINT_FLAG_MOTOR_ENABLED:
.. rst-class:: classref-enumeration-constant
:ref:`PinJointFlag<enum_PhysicsServer2D_PinJointFlag>` **PIN_JOINT_FLAG_MOTOR_ENABLED** = ``1``
如果为 ``true``\ ,则马达将转动该销。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_DampedSpringParam:
.. rst-class:: classref-enumeration
enum **DampedSpringParam**: :ref:`🔗<enum_PhysicsServer2D_DampedSpringParam>`
.. _class_PhysicsServer2D_constant_DAMPED_SPRING_REST_LENGTH:
.. rst-class:: classref-enumeration-constant
:ref:`DampedSpringParam<enum_PhysicsServer2D_DampedSpringParam>` **DAMPED_SPRING_REST_LENGTH** = ``0``
设置弹簧关节的放松长度。当拉开时,该关节将始终尝试回到这个长度。该参数的默认值是关节锚点之间的距离。
.. _class_PhysicsServer2D_constant_DAMPED_SPRING_STIFFNESS:
.. rst-class:: classref-enumeration-constant
:ref:`DampedSpringParam<enum_PhysicsServer2D_DampedSpringParam>` **DAMPED_SPRING_STIFFNESS** = ``1``
设置弹簧关节的刚度。该关节施加的力等于刚度乘以距其放松长度的距离。该参数的默认值为 ``20.0``\ 。
.. _class_PhysicsServer2D_constant_DAMPED_SPRING_DAMPING:
.. rst-class:: classref-enumeration-constant
:ref:`DampedSpringParam<enum_PhysicsServer2D_DampedSpringParam>` **DAMPED_SPRING_DAMPING** = ``2``
设置弹簧关节的阻尼比率。值为 0 表示无阻尼弹簧,而 1 表示系统尽可能快地达到平衡(临界阻尼)。该参数的默认值为 ``1.5``\ 。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_CCDMode:
.. rst-class:: classref-enumeration
enum **CCDMode**: :ref:`🔗<enum_PhysicsServer2D_CCDMode>`
.. _class_PhysicsServer2D_constant_CCD_MODE_DISABLED:
.. rst-class:: classref-enumeration-constant
:ref:`CCDMode<enum_PhysicsServer2D_CCDMode>` **CCD_MODE_DISABLED** = ``0``
禁用连续碰撞检测。这是检测物体碰撞的最快方法,但可能会错过较小和/或快速移动的物体。
.. _class_PhysicsServer2D_constant_CCD_MODE_CAST_RAY:
.. rst-class:: classref-enumeration-constant
:ref:`CCDMode<enum_PhysicsServer2D_CCDMode>` **CCD_MODE_CAST_RAY** = ``1``
通过射线投射实现连续的碰撞检测。它比形状投射更快,但不够精确。
.. _class_PhysicsServer2D_constant_CCD_MODE_CAST_SHAPE:
.. rst-class:: classref-enumeration-constant
:ref:`CCDMode<enum_PhysicsServer2D_CCDMode>` **CCD_MODE_CAST_SHAPE** = ``2``
通过形变实现连续的碰撞检测。它是最慢的 CCD 方法,也是最精确的。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_AreaBodyStatus:
.. rst-class:: classref-enumeration
enum **AreaBodyStatus**: :ref:`🔗<enum_PhysicsServer2D_AreaBodyStatus>`
.. _class_PhysicsServer2D_constant_AREA_BODY_ADDED:
.. rst-class:: classref-enumeration-constant
:ref:`AreaBodyStatus<enum_PhysicsServer2D_AreaBodyStatus>` **AREA_BODY_ADDED** = ``0``
当对象进入区域的任一形状时,区域回调函数接收的第一个参数值。
.. _class_PhysicsServer2D_constant_AREA_BODY_REMOVED:
.. rst-class:: classref-enumeration-constant
:ref:`AreaBodyStatus<enum_PhysicsServer2D_AreaBodyStatus>` **AREA_BODY_REMOVED** = ``1``
当对象退出区域的任一形状时,区域回调函数接收的第一个参数值。
.. rst-class:: classref-item-separator
----
.. _enum_PhysicsServer2D_ProcessInfo:
.. rst-class:: classref-enumeration
enum **ProcessInfo**: :ref:`🔗<enum_PhysicsServer2D_ProcessInfo>`
.. _class_PhysicsServer2D_constant_INFO_ACTIVE_OBJECTS:
.. rst-class:: classref-enumeration-constant
:ref:`ProcessInfo<enum_PhysicsServer2D_ProcessInfo>` **INFO_ACTIVE_OBJECTS** = ``0``
常量,用以获取未休眠的对象的数量。
.. _class_PhysicsServer2D_constant_INFO_COLLISION_PAIRS:
.. rst-class:: classref-enumeration-constant
:ref:`ProcessInfo<enum_PhysicsServer2D_ProcessInfo>` **INFO_COLLISION_PAIRS** = ``1``
常量,用以获取可能的碰撞数。
.. _class_PhysicsServer2D_constant_INFO_ISLAND_COUNT:
.. rst-class:: classref-enumeration-constant
:ref:`ProcessInfo<enum_PhysicsServer2D_ProcessInfo>` **INFO_ISLAND_COUNT** = ``2``
常量,用以获取可能发生碰撞的空间区块数。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
方法说明
--------
.. _class_PhysicsServer2D_method_area_add_shape:
.. rst-class:: classref-method
|void| **area_add_shape**\ (\ area\: :ref:`RID<class_RID>`, shape\: :ref:`RID<class_RID>`, transform\: :ref:`Transform2D<class_Transform2D>` = Transform2D(1, 0, 0, 1, 0, 0), disabled\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_PhysicsServer2D_method_area_add_shape>`
使用给定的局部变换向区域添加一个形状。该形状(连同它的 ``transform````disabled`` 属性)被添加到一个形状数组中,一个区域的形状通常由它们在这个数组中的索引引用。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_attach_canvas_instance_id:
.. rst-class:: classref-method
|void| **area_attach_canvas_instance_id**\ (\ area\: :ref:`RID<class_RID>`, id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_attach_canvas_instance_id>`
将画布的 ``ObjectID`` 附加到该区域。使用 :ref:`Object.get_instance_id()<class_Object_method_get_instance_id>` 获取 :ref:`CanvasLayer<class_CanvasLayer>```ObjectID``\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_attach_object_instance_id:
.. rst-class:: classref-method
|void| **area_attach_object_instance_id**\ (\ area\: :ref:`RID<class_RID>`, id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_attach_object_instance_id>`
将 :ref:`Object<class_Object>```ObjectID`` 附加到该区域。使用 :ref:`Object.get_instance_id()<class_Object_method_get_instance_id>` 获取 :ref:`CollisionObject2D<class_CollisionObject2D>```ObjectID``\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_clear_shapes:
.. rst-class:: classref-method
|void| **area_clear_shapes**\ (\ area\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_clear_shapes>`
从该区域移除所有形状。这不会删除形状本身,因此它们可以继续在别处使用或稍后添加回来。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **area_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_area_create>`
在物理服务器中创建一个 2D 区域对象,并返回标识该区域的 :ref:`RID<class_RID>`\ 。所创建区域的默认设置包括设置为 ``1`` 的碰撞层和遮罩,以及设置为 ``false````monitorable``\ 。
使用 :ref:`area_add_shape()<class_PhysicsServer2D_method_area_add_shape>` 向其添加形状,使用 :ref:`area_set_transform()<class_PhysicsServer2D_method_area_set_transform>` 设置其变换,并使用 :ref:`area_set_space()<class_PhysicsServer2D_method_area_set_space>` 将区域添加到一个空间。如果你希望该区域可被检测,请使用 :ref:`area_set_monitorable()<class_PhysicsServer2D_method_area_set_monitorable>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_canvas_instance_id:
.. rst-class:: classref-method
:ref:`int<class_int>` **area_get_canvas_instance_id**\ (\ area\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_canvas_instance_id>`
返回附加到该区域的画布的 ``ObjectID``\ 。使用 :ref:`@GlobalScope.instance_from_id()<class_@GlobalScope_method_instance_from_id>` 从非零 ``ObjectID`` 检索一个 :ref:`CanvasLayer<class_CanvasLayer>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_collision_layer:
.. rst-class:: classref-method
:ref:`int<class_int>` **area_get_collision_layer**\ (\ area\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_collision_layer>`
返回该区域所属的物理层,形式为位掩码。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_collision_mask:
.. rst-class:: classref-method
:ref:`int<class_int>` **area_get_collision_mask**\ (\ area\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_collision_mask>`
返回该区域所能接触的物理层,形式为位掩码。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_object_instance_id:
.. rst-class:: classref-method
:ref:`int<class_int>` **area_get_object_instance_id**\ (\ area\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_object_instance_id>`
返回附加到该区域的 ``ObjectID``\ 。可使用 :ref:`@GlobalScope.instance_from_id()<class_@GlobalScope_method_instance_from_id>` 从非零 ``ObjectID`` 中检索一个 :ref:`Object<class_Object>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_param:
.. rst-class:: classref-method
:ref:`Variant<class_Variant>` **area_get_param**\ (\ area\: :ref:`RID<class_RID>`, param\: :ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_param>`
返回给定区域参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_shape:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **area_get_shape**\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_shape>`
返回该区域的形状数组中给定索引的形状的 :ref:`RID<class_RID>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_shape_count:
.. rst-class:: classref-method
:ref:`int<class_int>` **area_get_shape_count**\ (\ area\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_shape_count>`
返回添加给该区域的形状数量。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_shape_transform:
.. rst-class:: classref-method
:ref:`Transform2D<class_Transform2D>` **area_get_shape_transform**\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_shape_transform>`
返回该区域的形状数组中给定索引的形状的局部变换矩阵。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_space:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **area_get_space**\ (\ area\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_space>`
返回分配给该区域的空间 :ref:`RID<class_RID>`\ 。如果没有分配空间,则返回空 :ref:`RID<class_RID>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_get_transform:
.. rst-class:: classref-method
:ref:`Transform2D<class_Transform2D>` **area_get_transform**\ (\ area\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_area_get_transform>`
返回该区域的变换矩阵。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_remove_shape:
.. rst-class:: classref-method
|void| **area_remove_shape**\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_remove_shape>`
从区域的形状数组中移除具有给定索引的形状。该形状本身并没有被删除,所以它可以继续在别处使用或稍后添加回来。此操作会使曾经索引高于 ``shape_idx`` 的区域形状的索引将减少一个。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_area_monitor_callback:
.. rst-class:: classref-method
|void| **area_set_area_monitor_callback**\ (\ area\: :ref:`RID<class_RID>`, callback\: :ref:`Callable<class_Callable>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_area_monitor_callback>`
设置该区域的区域监视回调。当任何其他(形状)区域进入或退出(形状)给定区域时,将调用此回调,并且必须采用以下五个参数:
1. 一个整数 ``status``\ \ :ref:`AREA_BODY_ADDED<class_PhysicsServer2D_constant_AREA_BODY_ADDED>` 或 :ref:`AREA_BODY_REMOVED<class_PhysicsServer2D_constant_AREA_BODY_REMOVED>` 取决于其他区域的形状是进入还是退出该区域,
2. 一个 :ref:`RID<class_RID>` ``area_rid``\ :进入或退出该区域的其他区域的 :ref:`RID<class_RID>`\
3. 一个整数 ``instance_id``\ :附加到其他区域的 ``ObjectID``\
4. 一个整数 ``area_shape_idx``\ :进入或退出该区域的其他区域的形状索引,
5. 一个整数 ``self_shape_idx``\ :其他区域进入或退出的区域的形状索引。
通过计算(或跟踪)进入和退出的形状,可以确定一个区域(及其所有形状)是第一次进入还是最后一次退出。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_collision_layer:
.. rst-class:: classref-method
|void| **area_set_collision_layer**\ (\ area\: :ref:`RID<class_RID>`, layer\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_collision_layer>`
将该区域分配给若干个物理层,使用位掩码。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_collision_mask:
.. rst-class:: classref-method
|void| **area_set_collision_mask**\ (\ area\: :ref:`RID<class_RID>`, mask\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_collision_mask>`
设置该区域所监视的物理层,使用位掩码。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_monitor_callback:
.. rst-class:: classref-method
|void| **area_set_monitor_callback**\ (\ area\: :ref:`RID<class_RID>`, callback\: :ref:`Callable<class_Callable>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_monitor_callback>`
设置区域的实体监视器回调。当任何其他(形状的)实体进入或退出(形状的)给定区域时,将调用此回调,并且必须采用以下五个参数:
1. 一个整数 ``status``\ \ :ref:`AREA_BODY_ADDED<class_PhysicsServer2D_constant_AREA_BODY_ADDED>` 或 :ref:`AREA_BODY_REMOVED<class_PhysicsServer2D_constant_AREA_BODY_REMOVED>` 取决于其他实体形状是否进入或退出该区域,
2. 一个 :ref:`RID<class_RID>` ``body_rid``\ :进入或离开该区域的实体的 :ref:`RID<class_RID>`\
3. 一个整数 ``instance_id``\ :附加到该实体上的 ``ObjectID``\
4. 一个整数 ``body_shape_idx``\ :进入或离开该区域的实体形状索引,
5. 一个整数 ``self_shape_idx``\ :实体进入或离开的区域的形状索引。
通过计算(或跟踪)进入和退出的形状,可以确定一个实体(及其所有形状)是第一次进入还是最后一次退出。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_monitorable:
.. rst-class:: classref-method
|void| **area_set_monitorable**\ (\ area\: :ref:`RID<class_RID>`, monitorable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_monitorable>`
设置该区域是否可监视。如果 ``monitorable````true``\ ,则该区域进入或退出其他区域时,会调用其他区域的区域监视回调。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_param:
.. rst-class:: classref-method
|void| **area_set_param**\ (\ area\: :ref:`RID<class_RID>`, param\: :ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_param>`
设置给定区域参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_shape:
.. rst-class:: classref-method
|void| **area_set_shape**\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, shape\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_shape>`
用另一个形状替换给定索引处的区域形状,同时不会影响在同一索引处的 ``transform````disabled`` 属性。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_shape_disabled:
.. rst-class:: classref-method
|void| **area_set_shape_disabled**\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, disabled\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_shape_disabled>`
使用给定索引设置区域形状的禁用属性。如果 ``disabled````true``\ ,则该形状将不会检测任何其他形状进入或退出它。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_shape_transform:
.. rst-class:: classref-method
|void| **area_set_shape_transform**\ (\ area\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, transform\: :ref:`Transform2D<class_Transform2D>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_shape_transform>`
设置该区域给定索引的形状的局部变换。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_space:
.. rst-class:: classref-method
|void| **area_set_space**\ (\ area\: :ref:`RID<class_RID>`, space\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_space>`
从先前赋予的空间(如果有)中移除该区域后,将该区域添加到给定空间。
\ **注意:**\ 要从空间中移除一个区域而不立即将其添加回其他地方,请使用 ``PhysicsServer2D.area_set_space(area, RID())``\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_area_set_transform:
.. rst-class:: classref-method
|void| **area_set_transform**\ (\ area\: :ref:`RID<class_RID>`, transform\: :ref:`Transform2D<class_Transform2D>`\ ) :ref:`🔗<class_PhysicsServer2D_method_area_set_transform>`
设置该区域的变换矩阵。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_add_collision_exception:
.. rst-class:: classref-method
|void| **body_add_collision_exception**\ (\ body\: :ref:`RID<class_RID>`, excepted_body\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_add_collision_exception>`
``excepted_body`` 添加到实体的碰撞例外列表中,以便忽略与它的碰撞。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_add_constant_central_force:
.. rst-class:: classref-method
|void| **body_add_constant_central_force**\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_add_constant_central_force>`
向实体添加一个恒定的定向力。该力不影响旋转。随着时间的推移,力会一直施加,直到使用 ``PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0))`` 清除。
这相当于在实体的质心处使用 :ref:`body_add_constant_force()<class_PhysicsServer2D_method_body_add_constant_force>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_add_constant_force:
.. rst-class:: classref-method
|void| **body_add_constant_force**\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ ) :ref:`🔗<class_PhysicsServer2D_method_body_add_constant_force>`
向实体添加一个恒定的定位力。如果 ``position`` 与实体的质心不同,则力会影响旋转。力会持续施加,直到使用 ``PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0))`` 清除。
\ ``position`` 是在全局坐标中距实体原点的偏移量。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_add_constant_torque:
.. rst-class:: classref-method
|void| **body_add_constant_torque**\ (\ body\: :ref:`RID<class_RID>`, torque\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_add_constant_torque>`
向实体添加一个恒定的旋转力。该力不影响位置。随着时间的推移,该力会一直施加,直到使用 ``PhysicsServer2D.body_set_constant_torque(body, 0)`` 清除。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_add_shape:
.. rst-class:: classref-method
|void| **body_add_shape**\ (\ body\: :ref:`RID<class_RID>`, shape\: :ref:`RID<class_RID>`, transform\: :ref:`Transform2D<class_Transform2D>` = Transform2D(1, 0, 0, 1, 0, 0), disabled\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_PhysicsServer2D_method_body_add_shape>`
使用给定的局部变换向该区域添加一个形状。该形状(连同它的 ``transform````disabled`` 属性)将被添加到一个形状数组中,一个实体的形状通常由它们在这个数组中的索引引用。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_apply_central_force:
.. rst-class:: classref-method
|void| **body_apply_central_force**\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_apply_central_force>`
在实体的质心处向实体施加一个定向力。该力不影响旋转。力是时间相关的,这意味着每次物理更新都会被施加。
这相当于在实体的质心处使用 :ref:`body_apply_force()<class_PhysicsServer2D_method_body_apply_force>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_apply_central_impulse:
.. rst-class:: classref-method
|void| **body_apply_central_impulse**\ (\ body\: :ref:`RID<class_RID>`, impulse\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_apply_central_impulse>`
在实体的质心处向该实体施加一个定向冲量。该冲量不影响旋转。
冲量是时间无关的每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因它应该只在模拟一次性影响时使用否则使用“_force”函数
这相当于在实体的质心处使用 :ref:`body_apply_impulse()<class_PhysicsServer2D_method_body_apply_impulse>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_apply_force:
.. rst-class:: classref-method
|void| **body_apply_force**\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ ) :ref:`🔗<class_PhysicsServer2D_method_body_apply_force>`
向实体施加一个定位力。如果 ``position`` 与实体的质心不同,则力会影响旋转。力是时间相关的,意味着每次物理更新都会被施加。
\ ``position`` 是在全局坐标中距实体原点的偏移量。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_apply_impulse:
.. rst-class:: classref-method
|void| **body_apply_impulse**\ (\ body\: :ref:`RID<class_RID>`, impulse\: :ref:`Vector2<class_Vector2>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ ) :ref:`🔗<class_PhysicsServer2D_method_body_apply_impulse>`
向实体施加一个定位冲量。如果 ``position`` 与实体的质心不同,则该冲量会影响旋转。
冲量是时间无关的每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因它应该只在模拟一次性影响时使用否则使用“_force”函数
\ ``position`` 是在全局坐标中距实体原点的偏移量。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_apply_torque:
.. rst-class:: classref-method
|void| **body_apply_torque**\ (\ body\: :ref:`RID<class_RID>`, torque\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_apply_torque>`
对实体施加一个旋转力。该力不影响位置。力是时间相关的,意味着每次物理更新都会被施加。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_apply_torque_impulse:
.. rst-class:: classref-method
|void| **body_apply_torque_impulse**\ (\ body\: :ref:`RID<class_RID>`, impulse\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_apply_torque_impulse>`
对实体施加一个旋转的冲量。该冲量不影响位置。
冲量是时间无关的每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因它应该只在模拟一次性影响时使用否则使用“_force”函数
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_attach_canvas_instance_id:
.. rst-class:: classref-method
|void| **body_attach_canvas_instance_id**\ (\ body\: :ref:`RID<class_RID>`, id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_attach_canvas_instance_id>`
将画布的 ``ObjectID`` 附加到该实体。可使用 :ref:`Object.get_instance_id()<class_Object_method_get_instance_id>` 获取 :ref:`CanvasLayer<class_CanvasLayer>```ObjectID``\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_attach_object_instance_id:
.. rst-class:: classref-method
|void| **body_attach_object_instance_id**\ (\ body\: :ref:`RID<class_RID>`, id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_attach_object_instance_id>`
将 :ref:`Object<class_Object>```ObjectID`` 附加到该实体。可使用 :ref:`Object.get_instance_id()<class_Object_method_get_instance_id>` 获取 :ref:`CollisionObject2D<class_CollisionObject2D>```ObjectID``\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_clear_shapes:
.. rst-class:: classref-method
|void| **body_clear_shapes**\ (\ body\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_clear_shapes>`
从该实体中移除所有形状。这不会删除形状本身,因此它们可以继续在别处使用或稍后添加回来。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **body_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_body_create>`
在物理服务器中创建一个 2D 物体对象,并返回标识它的 :ref:`RID<class_RID>`\ 。所创建区域的默认设置包括设置为 ``1`` 的碰撞层和遮罩,以及设置为 :ref:`BODY_MODE_RIGID<class_PhysicsServer2D_constant_BODY_MODE_RIGID>` 的物体模式。
使用 :ref:`body_add_shape()<class_PhysicsServer2D_method_body_add_shape>` 为其添加形状,使用 :ref:`body_set_state()<class_PhysicsServer2D_method_body_set_state>` 设置其变换,使用 :ref:`body_set_space()<class_PhysicsServer2D_method_body_set_space>` 将物体添加到一个空间。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_canvas_instance_id:
.. rst-class:: classref-method
:ref:`int<class_int>` **body_get_canvas_instance_id**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_canvas_instance_id>`
返回附加到该实体的画布的 ``ObjectID``\ 。可使用 :ref:`@GlobalScope.instance_from_id()<class_@GlobalScope_method_instance_from_id>` 从非零 ``ObjectID`` 检索一个 :ref:`CanvasLayer<class_CanvasLayer>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_collision_layer:
.. rst-class:: classref-method
:ref:`int<class_int>` **body_get_collision_layer**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_collision_layer>`
返回物体所属的物理层,形式为位掩码。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_collision_mask:
.. rst-class:: classref-method
:ref:`int<class_int>` **body_get_collision_mask**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_collision_mask>`
返回物体可以碰撞的物理层,形式为位掩码。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_collision_priority:
.. rst-class:: classref-method
:ref:`float<class_float>` **body_get_collision_priority**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_collision_priority>`
返回该实体的碰撞优先级。这用于 :ref:`body_test_motion()<class_PhysicsServer2D_method_body_test_motion>` 的穿透阶段。优先级越高,对该实体的穿透力就越低。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_constant_force:
.. rst-class:: classref-method
:ref:`Vector2<class_Vector2>` **body_get_constant_force**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_constant_force>`
返回在每次物理更新期间,该物体被施加的总的恒定位置的力。
参阅 :ref:`body_add_constant_force()<class_PhysicsServer2D_method_body_add_constant_force>`:ref:`body_add_constant_central_force()<class_PhysicsServer2D_method_body_add_constant_central_force>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_constant_torque:
.. rst-class:: classref-method
:ref:`float<class_float>` **body_get_constant_torque**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_constant_torque>`
返回在每次物理更新期间,该物体被施加的总的恒定旋转的力。
参阅 :ref:`body_add_constant_torque()<class_PhysicsServer2D_method_body_add_constant_torque>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_continuous_collision_detection_mode:
.. rst-class:: classref-method
:ref:`CCDMode<enum_PhysicsServer2D_CCDMode>` **body_get_continuous_collision_detection_mode**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_continuous_collision_detection_mode>`
返回该物体的连续碰撞检测模式。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_direct_state:
.. rst-class:: classref-method
:ref:`PhysicsDirectBodyState2D<class_PhysicsDirectBodyState2D>` **body_get_direct_state**\ (\ body\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_get_direct_state>`
返回该实体的 :ref:`PhysicsDirectBodyState2D<class_PhysicsDirectBodyState2D>`\ 。如果该实体已被销毁或未被分配给一个空间,则返回 ``null``\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_max_contacts_reported:
.. rst-class:: classref-method
:ref:`int<class_int>` **body_get_max_contacts_reported**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_max_contacts_reported>`
返回该实体可以报告的最大接触数。请参阅 :ref:`body_set_max_contacts_reported()<class_PhysicsServer2D_method_body_set_max_contacts_reported>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_mode:
.. rst-class:: classref-method
:ref:`BodyMode<enum_PhysicsServer2D_BodyMode>` **body_get_mode**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_mode>`
返回物体的模式。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_object_instance_id:
.. rst-class:: classref-method
:ref:`int<class_int>` **body_get_object_instance_id**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_object_instance_id>`
返回附加到该实体的 ``ObjectID``\ 。可使用 :ref:`@GlobalScope.instance_from_id()<class_@GlobalScope_method_instance_from_id>` 从非零 ``ObjectID`` 中检索一个 :ref:`Object<class_Object>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_param:
.. rst-class:: classref-method
:ref:`Variant<class_Variant>` **body_get_param**\ (\ body\: :ref:`RID<class_RID>`, param\: :ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_param>`
返回给定物体参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_shape:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **body_get_shape**\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_shape>`
返回该实体形状数组中具有给定索引的形状的 :ref:`RID<class_RID>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_shape_count:
.. rst-class:: classref-method
:ref:`int<class_int>` **body_get_shape_count**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_shape_count>`
返回添加至该物体的形状的数量。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_shape_transform:
.. rst-class:: classref-method
:ref:`Transform2D<class_Transform2D>` **body_get_shape_transform**\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_shape_transform>`
返回该区域的形状数组中给定索引的形状的局部变换矩阵。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_space:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **body_get_space**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_space>`
返回分配给该实体的空间的 :ref:`RID<class_RID>`\ 。如果没有分配空间,则返回空 :ref:`RID<class_RID>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_get_state:
.. rst-class:: classref-method
:ref:`Variant<class_Variant>` **body_get_state**\ (\ body\: :ref:`RID<class_RID>`, state\: :ref:`BodyState<enum_PhysicsServer2D_BodyState>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_get_state>`
返回物体给定状态的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_is_omitting_force_integration:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **body_is_omitting_force_integration**\ (\ body\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_body_is_omitting_force_integration>`
如果物体省略了标准力积分,则返回 ``true``\ 。参见 :ref:`body_set_omit_force_integration()<class_PhysicsServer2D_method_body_set_omit_force_integration>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_remove_collision_exception:
.. rst-class:: classref-method
|void| **body_remove_collision_exception**\ (\ body\: :ref:`RID<class_RID>`, excepted_body\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_remove_collision_exception>`
从物体的碰撞例外列表中移除 ``excepted_body``\ ,不再忽略与该物体的碰撞。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_remove_shape:
.. rst-class:: classref-method
|void| **body_remove_shape**\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_remove_shape>`
从该实体的形状数组中移除具有给定索引的形状。该形状本身并没有被删除,所以它可以继续在别处使用或稍后添加回来。该操作将会使曾经索引高于 ``shape_idx`` 的实体形状的索引将减少一个。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_reset_mass_properties:
.. rst-class:: classref-method
|void| **body_reset_mass_properties**\ (\ body\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_reset_mass_properties>`
根据实体的形状恢复该实体的默认惯性和质心。这会撤消之前使用 :ref:`body_set_param()<class_PhysicsServer2D_method_body_set_param>` 设置的任何自定义值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_axis_velocity:
.. rst-class:: classref-method
|void| **body_set_axis_velocity**\ (\ body\: :ref:`RID<class_RID>`, axis_velocity\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_axis_velocity>`
修改实体的线速度,使其到轴 ``axis_velocity.normalized()`` 的投影正好是 ``axis_velocity.length()``\ 。这对于跳跃行为很有用。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_collision_layer:
.. rst-class:: classref-method
|void| **body_set_collision_layer**\ (\ body\: :ref:`RID<class_RID>`, layer\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_collision_layer>`
设置该物体所属的物理层,使用位掩码。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_collision_mask:
.. rst-class:: classref-method
|void| **body_set_collision_mask**\ (\ body\: :ref:`RID<class_RID>`, mask\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_collision_mask>`
设置该物体能够碰撞的物理层,使用位掩码。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_collision_priority:
.. rst-class:: classref-method
|void| **body_set_collision_priority**\ (\ body\: :ref:`RID<class_RID>`, priority\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_collision_priority>`
设置该实体的碰撞优先级。这用于 :ref:`body_test_motion()<class_PhysicsServer2D_method_body_test_motion>` 的穿透阶段。优先级越高,对实体的穿透力就越低。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_constant_force:
.. rst-class:: classref-method
|void| **body_set_constant_force**\ (\ body\: :ref:`RID<class_RID>`, force\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_constant_force>`
设置在每次物理更新期间,该物体被施加的总的恒定位置的力。
参阅 :ref:`body_add_constant_force()<class_PhysicsServer2D_method_body_add_constant_force>` 和 :ref:`body_add_constant_central_force()<class_PhysicsServer2D_method_body_add_constant_central_force>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_constant_torque:
.. rst-class:: classref-method
|void| **body_set_constant_torque**\ (\ body\: :ref:`RID<class_RID>`, torque\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_constant_torque>`
设置在每次物理更新期间,该物体被施加的总的恒定旋转的力。
参阅 :ref:`body_add_constant_torque()<class_PhysicsServer2D_method_body_add_constant_torque>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_continuous_collision_detection_mode:
.. rst-class:: classref-method
|void| **body_set_continuous_collision_detection_mode**\ (\ body\: :ref:`RID<class_RID>`, mode\: :ref:`CCDMode<enum_PhysicsServer2D_CCDMode>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_continuous_collision_detection_mode>`
设置连续碰撞检测模式。
连续碰撞检测试图预测一个移动的物体将在物理更新之间发生碰撞的位置,而不是移动它并在发生碰撞时纠正它的运动。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_force_integration_callback:
.. rst-class:: classref-method
|void| **body_set_force_integration_callback**\ (\ body\: :ref:`RID<class_RID>`, callable\: :ref:`Callable<class_Callable>`, userdata\: :ref:`Variant<class_Variant>` = null\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_force_integration_callback>`
将物体的自定义力积分回调函数设置为 ``callable``\ 。使用空的 :ref:`Callable<class_Callable>`\ \ ``Callable()``\ 清除自定义回调。
函数 ``callable`` 将在标准力积分之前的每个物理刻度被调用(参见 :ref:`body_set_omit_force_integration()<class_PhysicsServer2D_method_body_set_omit_force_integration>`\ )。例如,它可用于根据与其他物体的接触更新物体的线速度和角速度。
如果 ``userdata`` 不为 ``null``\ ,函数 ``callable`` 必须采用以下两个参数:
1. ``state``\ :用于检索和修改物体状态的 :ref:`PhysicsDirectBodyState2D<class_PhysicsDirectBodyState2D>`\
2. ``userdata``\ \ :ref:`Variant<class_Variant>`\ ;其值将是传递到该方法的 ``userdata``\ 。
如果 ``userdata````null``\ ,则 ``callable`` 必须仅采用 ``state`` 参数。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_max_contacts_reported:
.. rst-class:: classref-method
|void| **body_set_max_contacts_reported**\ (\ body\: :ref:`RID<class_RID>`, amount\: :ref:`int<class_int>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_max_contacts_reported>`
设置该实体可以报告的接触的最大数量。如果 ``amount`` 大于零,那么实体将最多跟踪与其他实体的这么多次接触。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_mode:
.. rst-class:: classref-method
|void| **body_set_mode**\ (\ body\: :ref:`RID<class_RID>`, mode\: :ref:`BodyMode<enum_PhysicsServer2D_BodyMode>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_mode>`
设置物体的模式。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_omit_force_integration:
.. rst-class:: classref-method
|void| **body_set_omit_force_integration**\ (\ body\: :ref:`RID<class_RID>`, enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_omit_force_integration>`
设置物体是否省略标准力积分。如果 ``enable````true``\ ,物体将不会自动使用施加的力、扭矩和阻尼来更新物体的线速度和角速度。在这种情况下,可以使用 :ref:`body_set_force_integration_callback()<class_PhysicsServer2D_method_body_set_force_integration_callback>` 手动更新线速度和角速度。
当设置属性 :ref:`RigidBody2D.custom_integrator<class_RigidBody2D_property_custom_integrator>` 时,将调用该方法。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_param:
.. rst-class:: classref-method
|void| **body_set_param**\ (\ body\: :ref:`RID<class_RID>`, param\: :ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_param>`
设置给定物体参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_shape:
.. rst-class:: classref-method
|void| **body_set_shape**\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, shape\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_shape>`
用另一个形状替换给定索引处的实体形状,同时不会影响同一索引处的 ``transform``\ 、\ ``disabled`` 和单向碰撞属性。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_shape_as_one_way_collision:
.. rst-class:: classref-method
|void| **body_set_shape_as_one_way_collision**\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`, margin\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_shape_as_one_way_collision>`
使用给定索引设置实体形状的单向碰撞属性。如果 ``enable````true``\ ,则形状的局部向上轴 ``body_get_shape_transform(body, shape_idx).y`` 给出的单向碰撞方向将用于忽略与相反方向的形状,并确保运动实体的穿透发生在这个方向上。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_shape_disabled:
.. rst-class:: classref-method
|void| **body_set_shape_disabled**\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, disabled\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_shape_disabled>`
使用给定索引设置实体形状的禁用属性。如果 ``disabled````true``\ ,则在所有碰撞检测中将忽略该形状。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_shape_transform:
.. rst-class:: classref-method
|void| **body_set_shape_transform**\ (\ body\: :ref:`RID<class_RID>`, shape_idx\: :ref:`int<class_int>`, transform\: :ref:`Transform2D<class_Transform2D>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_shape_transform>`
使用给定索引设置该实体形状的局部变换矩阵。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_space:
.. rst-class:: classref-method
|void| **body_set_space**\ (\ body\: :ref:`RID<class_RID>`, space\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_space>`
从先前分配的空间(若存在)中移除实体后,将该实体添加到给定空间。如果实体的模式被设置为 :ref:`BODY_MODE_RIGID<class_PhysicsServer2D_constant_BODY_MODE_RIGID>`\ ,则将该实体添加到空间将具有以下额外效果:
- 如果从未明确设置参数 :ref:`BODY_PARAM_CENTER_OF_MASS<class_PhysicsServer2D_constant_BODY_PARAM_CENTER_OF_MASS>`\ ,则该参数的值将根据实体的形状重新计算。
- 如果参数 :ref:`BODY_PARAM_INERTIA<class_PhysicsServer2D_constant_BODY_PARAM_INERTIA>` 被设置为一个 ``<= 0.0`` 的值,则该参数的值将根据实体的形状、质量和质心重新计算。
\ **注意:**\ 要从一个空间中移除实体,且不立即将其添加回其他地方,请使用 ``PhysicsServer2D.body_set_space(body, RID())``\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_state:
.. rst-class:: classref-method
|void| **body_set_state**\ (\ body\: :ref:`RID<class_RID>`, state\: :ref:`BodyState<enum_PhysicsServer2D_BodyState>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_state>`
设置实体状态的值。
\ **注意:**\ 状态更改不会立即生效。状态更改将发生在下一个物理帧上。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_set_state_sync_callback:
.. rst-class:: classref-method
|void| **body_set_state_sync_callback**\ (\ body\: :ref:`RID<class_RID>`, callable\: :ref:`Callable<class_Callable>`\ ) :ref:`🔗<class_PhysicsServer2D_method_body_set_state_sync_callback>`
将物体的状态同步回调函数设置为 ``callable``\ 。清空回调请使用空的 :ref:`Callable<class_Callable>`\ \ ``Callable()``\ )。
每个物理帧都会调用一次 ``callable`` 函数,前提是该对象在上一个物理周期中处于活动状态,并且可以用于从物理服务器获取最新状态.
\ ``callable`` 函数的参数如下:
1. ``state``\ :类型为 :ref:`PhysicsDirectBodyState2D<class_PhysicsDirectBodyState2D>`\ ,用于获取物体的状态。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_body_test_motion:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **body_test_motion**\ (\ body\: :ref:`RID<class_RID>`, parameters\: :ref:`PhysicsTestMotionParameters2D<class_PhysicsTestMotionParameters2D>`, result\: :ref:`PhysicsTestMotionResult2D<class_PhysicsTestMotionResult2D>` = null\ ) :ref:`🔗<class_PhysicsServer2D_method_body_test_motion>`
如果从空间中的给定点,沿着运动向量移动实体会产生一个碰撞,则返回 ``true``\ 。有关可用的运动参数,请参阅 :ref:`PhysicsTestMotionParameters2D<class_PhysicsTestMotionParameters2D>`\ 。可以选择传递一个 :ref:`PhysicsTestMotionResult2D<class_PhysicsTestMotionResult2D>` 对象,该对象将用于存储有关所产生碰撞的信息。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_capsule_shape_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **capsule_shape_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_capsule_shape_create>`
在物理服务器中创建一个 2D 胶囊形状,并返回标识它的 :ref:`RID<class_RID>`\ 。可使用 :ref:`shape_set_data()<class_PhysicsServer2D_method_shape_set_data>` 设置胶囊的高度和半径。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_circle_shape_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **circle_shape_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_circle_shape_create>`
在物理服务器中创建一个 2D 圆形,并返回标识它的 :ref:`RID<class_RID>`\ 。可使用 :ref:`shape_set_data()<class_PhysicsServer2D_method_shape_set_data>` 设置圆的半径。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_concave_polygon_shape_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **concave_polygon_shape_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_concave_polygon_shape_create>`
在物理服务器中创建一个 2D 凹多边形形状,并返回标识它的 :ref:`RID<class_RID>`\ 。可使用 :ref:`shape_set_data()<class_PhysicsServer2D_method_shape_set_data>` 设置凹多边形的线段。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_convex_polygon_shape_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **convex_polygon_shape_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_convex_polygon_shape_create>`
在物理服务器中创建一个 2D 凸多边形形状,并返回标识它的 :ref:`RID<class_RID>`\ 。可使用 :ref:`shape_set_data()<class_PhysicsServer2D_method_shape_set_data>` 设置凸多边形的点。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_damped_spring_joint_get_param:
.. rst-class:: classref-method
:ref:`float<class_float>` **damped_spring_joint_get_param**\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`DampedSpringParam<enum_PhysicsServer2D_DampedSpringParam>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_damped_spring_joint_get_param>`
返回给定阻尼弹簧关节参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_damped_spring_joint_set_param:
.. rst-class:: classref-method
|void| **damped_spring_joint_set_param**\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`DampedSpringParam<enum_PhysicsServer2D_DampedSpringParam>`, value\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_damped_spring_joint_set_param>`
设置给定阻尼弹簧关节参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_free_rid:
.. rst-class:: classref-method
|void| **free_rid**\ (\ rid\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_free_rid>`
销毁由 PhysicsServer2D 创建的任何对象。如果传递的 :ref:`RID<class_RID>` 不是 PhysicsServer2D 可以创建的对象之一,则会将一个错误发送到控制台。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_get_process_info:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_process_info**\ (\ process_info\: :ref:`ProcessInfo<enum_PhysicsServer2D_ProcessInfo>`\ ) :ref:`🔗<class_PhysicsServer2D_method_get_process_info>`
返回由 ``process_info`` 指定的物理引擎状态的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_clear:
.. rst-class:: classref-method
|void| **joint_clear**\ (\ joint\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_joint_clear>`
销毁具有给定 :ref:`RID<class_RID>` 的关节,创建一个新的未初始化关节,并使该 :ref:`RID<class_RID>` 引用这个新关节。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **joint_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_joint_create>`
在物理服务器中创建一个 2D 关节,并返回标识它的 :ref:`RID<class_RID>`\ 。要设置关节类型,请使用 :ref:`joint_make_damped_spring()<class_PhysicsServer2D_method_joint_make_damped_spring>`\ 、\ :ref:`joint_make_groove()<class_PhysicsServer2D_method_joint_make_groove>`:ref:`joint_make_pin()<class_PhysicsServer2D_method_joint_make_pin>`\ 。可使用 :ref:`joint_set_param()<class_PhysicsServer2D_method_joint_set_param>` 设置通用关节参数。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_disable_collisions_between_bodies:
.. rst-class:: classref-method
|void| **joint_disable_collisions_between_bodies**\ (\ joint\: :ref:`RID<class_RID>`, disable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_PhysicsServer2D_method_joint_disable_collisions_between_bodies>`
设置附加到该 :ref:`Joint2D<class_Joint2D>` 的物体能否互相碰撞。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_get_param:
.. rst-class:: classref-method
:ref:`float<class_float>` **joint_get_param**\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`JointParam<enum_PhysicsServer2D_JointParam>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_joint_get_param>`
返回给定关节参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_get_type:
.. rst-class:: classref-method
:ref:`JointType<enum_PhysicsServer2D_JointType>` **joint_get_type**\ (\ joint\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_joint_get_type>`
返回关节的类型。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_is_disabled_collisions_between_bodies:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **joint_is_disabled_collisions_between_bodies**\ (\ joint\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_joint_is_disabled_collisions_between_bodies>`
返回分配给该 :ref:`Joint2D<class_Joint2D>` 的物体能否相互碰撞。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_make_damped_spring:
.. rst-class:: classref-method
|void| **joint_make_damped_spring**\ (\ joint\: :ref:`RID<class_RID>`, anchor_a\: :ref:`Vector2<class_Vector2>`, anchor_b\: :ref:`Vector2<class_Vector2>`, body_a\: :ref:`RID<class_RID>`, body_b\: :ref:`RID<class_RID>` = RID()\ ) :ref:`🔗<class_PhysicsServer2D_method_joint_make_damped_spring>`
使该关节成为一个阻尼弹簧关节,连接到实体 ``body_a`` 上的点 ``anchor_a``\ (在全局坐标中给出)和实体 ``body_b`` 上的点 ``anchor_b``\ (在全局坐标中给出)。要设置特定于阻尼弹簧的参数,请参阅 :ref:`damped_spring_joint_set_param()<class_PhysicsServer2D_method_damped_spring_joint_set_param>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_make_groove:
.. rst-class:: classref-method
|void| **joint_make_groove**\ (\ joint\: :ref:`RID<class_RID>`, groove1_a\: :ref:`Vector2<class_Vector2>`, groove2_a\: :ref:`Vector2<class_Vector2>`, anchor_b\: :ref:`Vector2<class_Vector2>`, body_a\: :ref:`RID<class_RID>` = RID(), body_b\: :ref:`RID<class_RID>` = RID()\ ) :ref:`🔗<class_PhysicsServer2D_method_joint_make_groove>`
使关节成为凹槽关节。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_make_pin:
.. rst-class:: classref-method
|void| **joint_make_pin**\ (\ joint\: :ref:`RID<class_RID>`, anchor\: :ref:`Vector2<class_Vector2>`, body_a\: :ref:`RID<class_RID>`, body_b\: :ref:`RID<class_RID>` = RID()\ ) :ref:`🔗<class_PhysicsServer2D_method_joint_make_pin>`
使关节成为一个销关节。如果 ``body_b`` 是一个空 :ref:`RID<class_RID>`\ ,则 ``body_a`` 被固定到点 ``anchor``\ (在全局坐标中给出); 否则,\ ``body_a````anchor`` 点被固定到 ``body_b``\ (在全局坐标中给出)。要设置特定于销关节的参数,请参阅 :ref:`pin_joint_set_param()<class_PhysicsServer2D_method_pin_joint_set_param>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_joint_set_param:
.. rst-class:: classref-method
|void| **joint_set_param**\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`JointParam<enum_PhysicsServer2D_JointParam>`, value\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_joint_set_param>`
设置给定关节参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_pin_joint_get_flag:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **pin_joint_get_flag**\ (\ joint\: :ref:`RID<class_RID>`, flag\: :ref:`PinJointFlag<enum_PhysicsServer2D_PinJointFlag>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_pin_joint_get_flag>`
获取钉固关节的标志。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_pin_joint_get_param:
.. rst-class:: classref-method
:ref:`float<class_float>` **pin_joint_get_param**\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_pin_joint_get_param>`
返回钉固关节参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_pin_joint_set_flag:
.. rst-class:: classref-method
|void| **pin_joint_set_flag**\ (\ joint\: :ref:`RID<class_RID>`, flag\: :ref:`PinJointFlag<enum_PhysicsServer2D_PinJointFlag>`, enabled\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_PhysicsServer2D_method_pin_joint_set_flag>`
设置钉固关节的标志。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_pin_joint_set_param:
.. rst-class:: classref-method
|void| **pin_joint_set_param**\ (\ joint\: :ref:`RID<class_RID>`, param\: :ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>`, value\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_pin_joint_set_param>`
设置钉固关节的参数。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_rectangle_shape_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **rectangle_shape_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_rectangle_shape_create>`
在物理服务器中创建一个 2D 矩形形状,并返回标识它的 :ref:`RID<class_RID>`\ 。可使用 :ref:`shape_set_data()<class_PhysicsServer2D_method_shape_set_data>` 设置该矩形的半边距。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_segment_shape_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **segment_shape_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_segment_shape_create>`
在物理服务器中创建一个 2D 线段形状,并返回标识它的 :ref:`RID<class_RID>`\ 。可使用 :ref:`shape_set_data()<class_PhysicsServer2D_method_shape_set_data>` 设置线段的起点和终点。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_separation_ray_shape_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **separation_ray_shape_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_separation_ray_shape_create>`
在物理服务器中创建一个 2D 分离射线形状,并返回标识它的 :ref:`RID<class_RID>`\ 。可使用 :ref:`shape_set_data()<class_PhysicsServer2D_method_shape_set_data>` 设置形状的 ``length````slide_on_slope`` 属性。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_set_active:
.. rst-class:: classref-method
|void| **set_active**\ (\ active\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_PhysicsServer2D_method_set_active>`
激活或停用 2D 物理服务器。如果 ``active````false``\ ,则物理服务器将不会在其物理迭代中执行任何操作。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_shape_get_data:
.. rst-class:: classref-method
:ref:`Variant<class_Variant>` **shape_get_data**\ (\ shape\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_shape_get_data>`
返回定义形状配置的形状数据,例如矩形的半边长或凹形的线段。有关每种情况下该数据的精确格式,请参阅 :ref:`shape_set_data()<class_PhysicsServer2D_method_shape_set_data>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_shape_get_type:
.. rst-class:: classref-method
:ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **shape_get_type**\ (\ shape\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_shape_get_type>`
返回形状的类型。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_shape_set_data:
.. rst-class:: classref-method
|void| **shape_set_data**\ (\ shape\: :ref:`RID<class_RID>`, data\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_PhysicsServer2D_method_shape_set_data>`
设置定义形状配置的形状数据。要传递的 ``data`` 取决于形状的类型(参见 :ref:`shape_get_type()<class_PhysicsServer2D_method_shape_get_type>`\
- :ref:`SHAPE_WORLD_BOUNDARY<class_PhysicsServer2D_constant_SHAPE_WORLD_BOUNDARY>`\ :长度为 2 的数组,包含 :ref:`Vector2<class_Vector2>` 类型的 ``normal`` 方向和 :ref:`float<class_float>` 类型的距离 ``d``\
- :ref:`SHAPE_SEPARATION_RAY<class_PhysicsServer2D_constant_SHAPE_SEPARATION_RAY>`\ :字典,包含键 ``length``:ref:`float<class_float>` 值、以及键 ``slide_on_slope``:ref:`bool<class_bool>` 值,
- :ref:`SHAPE_SEGMENT<class_PhysicsServer2D_constant_SHAPE_SEGMENT>`\ \ :ref:`Rect2<class_Rect2>` 类型的 ``rect``\ ,以 ``rect.position`` 表示线段中的第一个点,并以 ``rect.size`` 表示线段中的第二个点,
- :ref:`SHAPE_CIRCLE<class_PhysicsServer2D_constant_SHAPE_CIRCLE>`\ \ :ref:`float<class_float>` 类型的 ``radius``\
- :ref:`SHAPE_RECTANGLE<class_PhysicsServer2D_constant_SHAPE_RECTANGLE>`\ \ :ref:`Vector2<class_Vector2>` 类型的 ``half_extents``\
- :ref:`SHAPE_CAPSULE<class_PhysicsServer2D_constant_SHAPE_CAPSULE>`\ :长度为 2 的数组(或一个 :ref:`Vector2<class_Vector2>`\ ),包含一个 :ref:`float<class_float>` 类型的 ``height`` 和一个 :ref:`float<class_float>` 类型的 ``radius``\
- :ref:`SHAPE_CONVEX_POLYGON<class_PhysicsServer2D_constant_SHAPE_CONVEX_POLYGON>`\ :按逆时针顺序定义凸多边形的点的 :ref:`PackedVector2Array<class_PackedVector2Array>`\ (在内部使用由连续点形成的每个线段的顺时针向外法线计算);或一个长度可被 4 整除的 :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ,以便每个 4 元组的 :ref:`float<class_float>` 包含一个点的坐标,后跟一个向量的坐标表示,该向量是当前点和下一个点之间的线段的顺时针向外法向量,
- :ref:`SHAPE_CONCAVE_POLYGON<class_PhysicsServer2D_constant_SHAPE_CONCAVE_POLYGON>`\ :长度可被 2 整除的 :ref:`PackedVector2Array<class_PackedVector2Array>`\ (每对点形成一个线段)。
\ **警告:**\ 在 :ref:`SHAPE_CONVEX_POLYGON<class_PhysicsServer2D_constant_SHAPE_CONVEX_POLYGON>` 的情况下,该方法不检查提供的点是否能够形成凸多边形(与 :ref:`CollisionPolygon2D.polygon<class_CollisionPolygon2D_property_polygon>` 属性不同)。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_space_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **space_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_space_create>`
在物理服务器中创建一个 2D 空间,并返回标识它的 :ref:`RID<class_RID>`\ 。空间包含实体和区域,并控制其中实体的物理模拟的步骤。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_space_get_direct_state:
.. rst-class:: classref-method
:ref:`PhysicsDirectSpaceState2D<class_PhysicsDirectSpaceState2D>` **space_get_direct_state**\ (\ space\: :ref:`RID<class_RID>`\ ) :ref:`🔗<class_PhysicsServer2D_method_space_get_direct_state>`
返回空间的状态,即 :ref:`PhysicsDirectSpaceState2D<class_PhysicsDirectSpaceState2D>`\ 。该对象可用于进行碰撞/相交的查询。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_space_get_param:
.. rst-class:: classref-method
:ref:`float<class_float>` **space_get_param**\ (\ space\: :ref:`RID<class_RID>`, param\: :ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_space_get_param>`
返回给定空间参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_space_is_active:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **space_is_active**\ (\ space\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_PhysicsServer2D_method_space_is_active>`
如果该空间处于活动状态,则返回 ``true``\ 。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_space_set_active:
.. rst-class:: classref-method
|void| **space_set_active**\ (\ space\: :ref:`RID<class_RID>`, active\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_PhysicsServer2D_method_space_set_active>`
激活或停用该空间。如果 ``active````false``\ ,那么物理服务器将不会在它的物理迭代中对这个空间做任何事情。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_space_set_param:
.. rst-class:: classref-method
|void| **space_set_param**\ (\ space\: :ref:`RID<class_RID>`, param\: :ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>`, value\: :ref:`float<class_float>`\ ) :ref:`🔗<class_PhysicsServer2D_method_space_set_param>`
设置给定空间参数的取值。
.. rst-class:: classref-item-separator
----
.. _class_PhysicsServer2D_method_world_boundary_shape_create:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **world_boundary_shape_create**\ (\ ) :ref:`🔗<class_PhysicsServer2D_method_world_boundary_shape_create>`
在物理服务器中创建一个 2D 世界边界形状,并返回标识它的 :ref:`RID<class_RID>`\ 。可使用 :ref:`shape_set_data()<class_PhysicsServer2D_method_shape_set_data>` 设置形状的法线方向和距离属性。
.. |virtual| replace:: :abbr:`virtual (本方法通常需要用户覆盖才能生效。)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (本方法无副作用,不会修改该实例的任何成员变量。)`
.. |vararg| replace:: :abbr:`vararg (本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。)`
.. |constructor| replace:: :abbr:`constructor (本方法用于构造某个类型。)`
.. |static| replace:: :abbr:`static (调用本方法无需实例,可直接使用类名进行调用。)`
.. |operator| replace:: :abbr:`operator (本方法描述的是使用本类型作为左操作数的有效运算符。)`
.. |bitfield| replace:: :abbr:`BitField (这个值是由下列位标志构成位掩码的整数。)`
.. |void| replace:: :abbr:`void (无返回值。)`