class_rigidbody2d.rst 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. .. Generated automatically by doc/tools/makerst.py in Godot's source tree.
  2. .. DO NOT EDIT THIS FILE, but the doc/base/classes.xml source instead.
  3. .. _class_RigidBody2D:
  4. RigidBody2D
  5. ===========
  6. **Inherits:** :ref:`PhysicsBody2D<class_physicsbody2d>` **<** :ref:`CollisionObject2D<class_collisionobject2d>` **<** :ref:`Node2D<class_node2d>` **<** :ref:`CanvasItem<class_canvasitem>` **<** :ref:`Node<class_node>` **<** :ref:`Object<class_object>`
  7. **Category:** Core
  8. Brief Description
  9. -----------------
  10. Rigid body 2D node.
  11. Member Functions
  12. ----------------
  13. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  14. | void | :ref:`_integrate_forces<class_RigidBody2D__integrate_forces>` **(** :ref:`Physics2DDirectBodyState<class_physics2ddirectbodystate>` state **)** virtual |
  15. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  16. | void | :ref:`set_mode<class_RigidBody2D_set_mode>` **(** :ref:`int<class_int>` mode **)** |
  17. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  18. | :ref:`int<class_int>` | :ref:`get_mode<class_RigidBody2D_get_mode>` **(** **)** const |
  19. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  20. | void | :ref:`set_mass<class_RigidBody2D_set_mass>` **(** :ref:`float<class_float>` mass **)** |
  21. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  22. | :ref:`float<class_float>` | :ref:`get_mass<class_RigidBody2D_get_mass>` **(** **)** const |
  23. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  24. | void | :ref:`set_weight<class_RigidBody2D_set_weight>` **(** :ref:`float<class_float>` weight **)** |
  25. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  26. | :ref:`float<class_float>` | :ref:`get_weight<class_RigidBody2D_get_weight>` **(** **)** const |
  27. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  28. | void | :ref:`set_friction<class_RigidBody2D_set_friction>` **(** :ref:`float<class_float>` friction **)** |
  29. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  30. | :ref:`float<class_float>` | :ref:`get_friction<class_RigidBody2D_get_friction>` **(** **)** const |
  31. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  32. | void | :ref:`set_bounce<class_RigidBody2D_set_bounce>` **(** :ref:`float<class_float>` bounce **)** |
  33. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  34. | :ref:`float<class_float>` | :ref:`get_bounce<class_RigidBody2D_get_bounce>` **(** **)** const |
  35. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  36. | void | :ref:`set_gravity_scale<class_RigidBody2D_set_gravity_scale>` **(** :ref:`float<class_float>` gravity_scale **)** |
  37. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  38. | :ref:`float<class_float>` | :ref:`get_gravity_scale<class_RigidBody2D_get_gravity_scale>` **(** **)** const |
  39. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  40. | void | :ref:`set_linear_damp<class_RigidBody2D_set_linear_damp>` **(** :ref:`float<class_float>` linear_damp **)** |
  41. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  42. | :ref:`float<class_float>` | :ref:`get_linear_damp<class_RigidBody2D_get_linear_damp>` **(** **)** const |
  43. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  44. | void | :ref:`set_angular_damp<class_RigidBody2D_set_angular_damp>` **(** :ref:`float<class_float>` angular_damp **)** |
  45. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  46. | :ref:`float<class_float>` | :ref:`get_angular_damp<class_RigidBody2D_get_angular_damp>` **(** **)** const |
  47. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  48. | void | :ref:`set_linear_velocity<class_RigidBody2D_set_linear_velocity>` **(** :ref:`Vector2<class_vector2>` linear_velocity **)** |
  49. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  50. | :ref:`Vector2<class_vector2>` | :ref:`get_linear_velocity<class_RigidBody2D_get_linear_velocity>` **(** **)** const |
  51. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  52. | void | :ref:`set_angular_velocity<class_RigidBody2D_set_angular_velocity>` **(** :ref:`float<class_float>` angular_velocity **)** |
  53. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  54. | :ref:`float<class_float>` | :ref:`get_angular_velocity<class_RigidBody2D_get_angular_velocity>` **(** **)** const |
  55. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  56. | void | :ref:`set_max_contacts_reported<class_RigidBody2D_set_max_contacts_reported>` **(** :ref:`int<class_int>` amount **)** |
  57. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  58. | :ref:`int<class_int>` | :ref:`get_max_contacts_reported<class_RigidBody2D_get_max_contacts_reported>` **(** **)** const |
  59. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  60. | void | :ref:`set_use_custom_integrator<class_RigidBody2D_set_use_custom_integrator>` **(** :ref:`bool<class_bool>` enable **)** |
  61. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  62. | :ref:`bool<class_bool>` | :ref:`is_using_custom_integrator<class_RigidBody2D_is_using_custom_integrator>` **(** **)** |
  63. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  64. | void | :ref:`set_contact_monitor<class_RigidBody2D_set_contact_monitor>` **(** :ref:`bool<class_bool>` enabled **)** |
  65. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  66. | :ref:`bool<class_bool>` | :ref:`is_contact_monitor_enabled<class_RigidBody2D_is_contact_monitor_enabled>` **(** **)** const |
  67. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  68. | void | :ref:`set_continuous_collision_detection_mode<class_RigidBody2D_set_continuous_collision_detection_mode>` **(** :ref:`int<class_int>` mode **)** |
  69. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  70. | :ref:`int<class_int>` | :ref:`get_continuous_collision_detection_mode<class_RigidBody2D_get_continuous_collision_detection_mode>` **(** **)** const |
  71. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  72. | void | :ref:`set_axis_velocity<class_RigidBody2D_set_axis_velocity>` **(** :ref:`Vector2<class_vector2>` axis_velocity **)** |
  73. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  74. | void | :ref:`apply_impulse<class_RigidBody2D_apply_impulse>` **(** :ref:`Vector2<class_vector2>` pos, :ref:`Vector2<class_vector2>` impulse **)** |
  75. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  76. | void | :ref:`set_applied_force<class_RigidBody2D_set_applied_force>` **(** :ref:`Vector2<class_vector2>` force **)** |
  77. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  78. | :ref:`Vector2<class_vector2>` | :ref:`get_applied_force<class_RigidBody2D_get_applied_force>` **(** **)** const |
  79. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  80. | void | :ref:`set_sleeping<class_RigidBody2D_set_sleeping>` **(** :ref:`bool<class_bool>` sleeping **)** |
  81. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  82. | :ref:`bool<class_bool>` | :ref:`is_sleeping<class_RigidBody2D_is_sleeping>` **(** **)** const |
  83. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  84. | void | :ref:`set_can_sleep<class_RigidBody2D_set_can_sleep>` **(** :ref:`bool<class_bool>` able_to_sleep **)** |
  85. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  86. | :ref:`bool<class_bool>` | :ref:`is_able_to_sleep<class_RigidBody2D_is_able_to_sleep>` **(** **)** const |
  87. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  88. | :ref:`bool<class_bool>` | :ref:`test_motion<class_RigidBody2D_test_motion>` **(** :ref:`Vector2<class_vector2>` motion, :ref:`float<class_float>` margin=0.08, :ref:`Physics2DTestMotionResult<class_physics2dtestmotionresult>` result=NULL **)** |
  89. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  90. | :ref:`Array<class_array>` | :ref:`get_colliding_bodies<class_RigidBody2D_get_colliding_bodies>` **(** **)** const |
  91. +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  92. Signals
  93. -------
  94. - **body_enter** **(** :ref:`Object<class_object>` body **)**
  95. - **body_enter_shape** **(** :ref:`int<class_int>` body_id, :ref:`Object<class_object>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
  96. - **body_exit** **(** :ref:`Object<class_object>` body **)**
  97. - **body_exit_shape** **(** :ref:`int<class_int>` body_id, :ref:`Object<class_object>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
  98. Numeric Constants
  99. -----------------
  100. - **MODE_STATIC** = **1** --- Static mode. The body behaves like a :ref:`StaticBody2D<class_staticbody2d>`, and can only move by user code.
  101. - **MODE_KINEMATIC** = **3** --- Kinematic body. The body behaves like a :ref:`KinematicBody2D<class_kinematicbody2d>`, and can only move by user code.
  102. - **MODE_RIGID** = **0** --- Rigid body. This is the "natural" state of a rigid body. It is affected by forces, and can move, rotate, and be affected by user code.
  103. - **MODE_CHARACTER** = **2** --- Character body. This behaves like a rigid body, but can not rotate.
  104. - **CCD_MODE_DISABLED** = **0** --- Disables continuous collision detection. This is the fastest way to detect body collisions, but can miss small, fast-moving objects.
  105. - **CCD_MODE_CAST_RAY** = **1** --- Enables continuous collision detection by raycasting. It is faster than shapecasting, but less precise.
  106. - **CCD_MODE_CAST_SHAPE** = **2** --- Enables continuous collision detection by shapecasting. It is the slowest CCD method, and the most precise.
  107. Description
  108. -----------
  109. Rigid body 2D node. This node is used for placing rigid bodies in the scene. It can contain a number of shapes, and also shift state between regular Rigid body, Kinematic, Character or Static.
  110. Character mode forbids the node from being rotated. This node can have a custom force integrator function, for writing complex physics motion behavior per node.
  111. As a warning, don't change this node position every frame or very often. Sporadic changes work fine, but physics runs at a different granularity (fixed hz) than usual rendering (process callback) and maybe even in a separate thread, so changing this from a process loop will yield strange behavior.
  112. Member Function Description
  113. ---------------------------
  114. .. _class_RigidBody2D__integrate_forces:
  115. - void **_integrate_forces** **(** :ref:`Physics2DDirectBodyState<class_physics2ddirectbodystate>` state **)** virtual
  116. Override this function to use a custom force integrator. This allows to hook up to the physics processing and alter the simulation state for the object on every frame.
  117. .. _class_RigidBody2D_set_mode:
  118. - void **set_mode** **(** :ref:`int<class_int>` mode **)**
  119. Set the body mode, from the MODE\_\* enum. This allows to change to a static body or a character body.
  120. .. _class_RigidBody2D_get_mode:
  121. - :ref:`int<class_int>` **get_mode** **(** **)** const
  122. Return the current body mode, see :ref:`set_mode<class_RigidBody2D_set_mode>`.
  123. .. _class_RigidBody2D_set_mass:
  124. - void **set_mass** **(** :ref:`float<class_float>` mass **)**
  125. Set the body mass.
  126. .. _class_RigidBody2D_get_mass:
  127. - :ref:`float<class_float>` **get_mass** **(** **)** const
  128. Return the body mass.
  129. .. _class_RigidBody2D_set_weight:
  130. - void **set_weight** **(** :ref:`float<class_float>` weight **)**
  131. Set the body weight given standard earth-weight (gravity 9.8). Not really useful for 2D since most measures for this node are in pixels.
  132. .. _class_RigidBody2D_get_weight:
  133. - :ref:`float<class_float>` **get_weight** **(** **)** const
  134. Return the body weight given standard earth-weight (gravity 9.8).
  135. .. _class_RigidBody2D_set_friction:
  136. - void **set_friction** **(** :ref:`float<class_float>` friction **)**
  137. Set the body friction, from 0 (frictionless) to 1 (full friction).
  138. .. _class_RigidBody2D_get_friction:
  139. - :ref:`float<class_float>` **get_friction** **(** **)** const
  140. Return the body friction.
  141. .. _class_RigidBody2D_set_bounce:
  142. - void **set_bounce** **(** :ref:`float<class_float>` bounce **)**
  143. Set the body bounciness, from 0 (no bounce) to 1 (full bounce).
  144. .. _class_RigidBody2D_get_bounce:
  145. - :ref:`float<class_float>` **get_bounce** **(** **)** const
  146. Return the body bounciness.
  147. .. _class_RigidBody2D_set_gravity_scale:
  148. - void **set_gravity_scale** **(** :ref:`float<class_float>` gravity_scale **)**
  149. Set The gravity factor. This factor multiplies gravity intensity just for this body.
  150. .. _class_RigidBody2D_get_gravity_scale:
  151. - :ref:`float<class_float>` **get_gravity_scale** **(** **)** const
  152. Return the gravity factor.
  153. .. _class_RigidBody2D_set_linear_damp:
  154. - void **set_linear_damp** **(** :ref:`float<class_float>` linear_damp **)**
  155. Set the linear damp for this body. If this value is different from -1, any linear damp derived from the world or areas will be overridden.
  156. .. _class_RigidBody2D_get_linear_damp:
  157. - :ref:`float<class_float>` **get_linear_damp** **(** **)** const
  158. Return the linear damp for this body.
  159. .. _class_RigidBody2D_set_angular_damp:
  160. - void **set_angular_damp** **(** :ref:`float<class_float>` angular_damp **)**
  161. Set the angular damp for this body. If this value is different from -1, any angular damp derived from the world or areas will be overridden.
  162. .. _class_RigidBody2D_get_angular_damp:
  163. - :ref:`float<class_float>` **get_angular_damp** **(** **)** const
  164. Return the angular damp for this body.
  165. .. _class_RigidBody2D_set_linear_velocity:
  166. - void **set_linear_velocity** **(** :ref:`Vector2<class_vector2>` linear_velocity **)**
  167. Set the body linear velocity. Can be used sporadically, but **DON'T SET THIS IN EVERY FRAME**, because physics may be running in another thread and definitely runs at a different granularity. Use :ref:`_integrate_forces<class_RigidBody2D__integrate_forces>` as your process loop if you want to have precise control of the body state.
  168. .. _class_RigidBody2D_get_linear_velocity:
  169. - :ref:`Vector2<class_vector2>` **get_linear_velocity** **(** **)** const
  170. Return the body linear velocity. This changes by physics granularity. See :ref:`set_linear_velocity<class_RigidBody2D_set_linear_velocity>`.
  171. .. _class_RigidBody2D_set_angular_velocity:
  172. - void **set_angular_velocity** **(** :ref:`float<class_float>` angular_velocity **)**
  173. Set the body angular velocity. Can be used sporadically, but **DON'T SET THIS IN EVERY FRAME**, because physics may be running in another thread and definitely runs at a different granularity. Use :ref:`_integrate_forces<class_RigidBody2D__integrate_forces>` as your process loop if you want to have precise control of the body state.
  174. .. _class_RigidBody2D_get_angular_velocity:
  175. - :ref:`float<class_float>` **get_angular_velocity** **(** **)** const
  176. Return the body angular velocity. This changes by physics granularity. See :ref:`set_angular_velocity<class_RigidBody2D_set_angular_velocity>`.
  177. .. _class_RigidBody2D_set_max_contacts_reported:
  178. - void **set_max_contacts_reported** **(** :ref:`int<class_int>` amount **)**
  179. Set the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0.
  180. .. _class_RigidBody2D_get_max_contacts_reported:
  181. - :ref:`int<class_int>` **get_max_contacts_reported** **(** **)** const
  182. Return the maximum contacts that can be reported. See :ref:`set_max_contacts_reported<class_RigidBody2D_set_max_contacts_reported>`.
  183. .. _class_RigidBody2D_set_use_custom_integrator:
  184. - void **set_use_custom_integrator** **(** :ref:`bool<class_bool>` enable **)**
  185. Set to true if the body shall not do any internal force integration at all (like gravity or air friction). Only the :ref:`_integrate_forces<class_RigidBody2D__integrate_forces>` will be able to integrate them if overridden.
  186. .. _class_RigidBody2D_is_using_custom_integrator:
  187. - :ref:`bool<class_bool>` **is_using_custom_integrator** **(** **)**
  188. Return true if the body is not doing any built-in force integration.
  189. .. _class_RigidBody2D_set_contact_monitor:
  190. - void **set_contact_monitor** **(** :ref:`bool<class_bool>` enabled **)**
  191. Enable contact monitoring. This allows the body to emit signals when it collides with another.
  192. .. _class_RigidBody2D_is_contact_monitor_enabled:
  193. - :ref:`bool<class_bool>` **is_contact_monitor_enabled** **(** **)** const
  194. Return whether contact monitoring is enabled.
  195. .. _class_RigidBody2D_set_continuous_collision_detection_mode:
  196. - void **set_continuous_collision_detection_mode** **(** :ref:`int<class_int>` mode **)**
  197. Set the continuous collision detection mode from the enum CCD_MODE\_\*.
  198. Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided. The first is more precise, and misses less impacts by small, fast-moving objects. The second is faster to compute, but can miss small, fat-moving objects.
  199. .. _class_RigidBody2D_get_continuous_collision_detection_mode:
  200. - :ref:`int<class_int>` **get_continuous_collision_detection_mode** **(** **)** const
  201. Return whether this body is using continuous collision detection.
  202. .. _class_RigidBody2D_set_axis_velocity:
  203. - void **set_axis_velocity** **(** :ref:`Vector2<class_vector2>` axis_velocity **)**
  204. Set an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
  205. .. _class_RigidBody2D_apply_impulse:
  206. - void **apply_impulse** **(** :ref:`Vector2<class_vector2>` pos, :ref:`Vector2<class_vector2>` impulse **)**
  207. Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once.
  208. .. _class_RigidBody2D_set_applied_force:
  209. - void **set_applied_force** **(** :ref:`Vector2<class_vector2>` force **)**
  210. Set the applied force vector. This is the equivalent of pushing a box over the ground: the force applied is applied constantly.
  211. .. _class_RigidBody2D_get_applied_force:
  212. - :ref:`Vector2<class_vector2>` **get_applied_force** **(** **)** const
  213. Return the applied force vector.
  214. .. _class_RigidBody2D_set_sleeping:
  215. - void **set_sleeping** **(** :ref:`bool<class_bool>` sleeping **)**
  216. Set whether a body is sleeping or not. Sleeping bodies are not affected by forces until a collision or an :ref:`apply_impulse<class_RigidBody2D_apply_impulse>` / :ref:`set_applied_force<class_RigidBody2D_set_applied_force>` wakes them up. Until then, they behave like a static body.
  217. .. _class_RigidBody2D_is_sleeping:
  218. - :ref:`bool<class_bool>` **is_sleeping** **(** **)** const
  219. Return whether the body is sleeping.
  220. .. _class_RigidBody2D_set_can_sleep:
  221. - void **set_can_sleep** **(** :ref:`bool<class_bool>` able_to_sleep **)**
  222. Set the body ability to fall asleep when not moving. This saves an enormous amount of processor time when there are plenty of rigid bodies (non static) in a scene.
  223. Sleeping bodies are not affected by forces until a collision or an :ref:`apply_impulse<class_RigidBody2D_apply_impulse>` / :ref:`set_applied_force<class_RigidBody2D_set_applied_force>` wakes them up. Until then, they behave like a static body.
  224. .. _class_RigidBody2D_is_able_to_sleep:
  225. - :ref:`bool<class_bool>` **is_able_to_sleep** **(** **)** const
  226. Return true if the body has the ability to fall asleep when not moving. See :ref:`set_can_sleep<class_RigidBody2D_set_can_sleep>`.
  227. .. _class_RigidBody2D_test_motion:
  228. - :ref:`bool<class_bool>` **test_motion** **(** :ref:`Vector2<class_vector2>` motion, :ref:`float<class_float>` margin=0.08, :ref:`Physics2DTestMotionResult<class_physics2dtestmotionresult>` result=NULL **)**
  229. Return whether the body would collide, if it tried to move in the given vector. This method allows two extra parameters: A margin, which increases slightly the size of the shapes involved in the collision detection, and an object of type :ref:`Physics2DTestMotionResult<class_physics2dtestmotionresult>`, which will store additional information about the collision (should there be one).
  230. .. _class_RigidBody2D_get_colliding_bodies:
  231. - :ref:`Array<class_array>` **get_colliding_bodies** **(** **)** const
  232. Return a list of the bodies colliding with this one.