Skip to content

Latest commit

 

History

History
167 lines (100 loc) · 12.2 KB

class_physicsbody2d.rst

File metadata and controls

167 lines (100 loc) · 12.2 KB
github_url:hide

PhysicsBody2D

Inherits: :ref:`CollisionObject2D<class_CollisionObject2D>` < :ref:`Node2D<class_Node2D>` < :ref:`CanvasItem<class_CanvasItem>` < :ref:`Node<class_Node>` < :ref:`Object<class_Object>`

Inherited By: :ref:`CharacterBody2D<class_CharacterBody2D>`, :ref:`RigidBody2D<class_RigidBody2D>`, :ref:`StaticBody2D<class_StaticBody2D>`

Abstract base class for 2D game objects affected by physics.

.. rst-class:: classref-introduction-group

Description

PhysicsBody2D is an abstract base class for 2D game objects affected by physics. All 2D physics bodies inherit from it.

.. rst-class:: classref-introduction-group

Tutorials

.. rst-class:: classref-reftable-group

Properties

:ref:`bool<class_bool>` input_pickable false (overrides :ref:`CollisionObject2D<class_CollisionObject2D_property_input_pickable>`)
.. rst-class:: classref-reftable-group

Methods

|void| :ref:`add_collision_exception_with<class_PhysicsBody2D_method_add_collision_exception_with>`(body: :ref:`Node<class_Node>`)
:ref:`Array<class_Array>`[:ref:`PhysicsBody2D<class_PhysicsBody2D>`] :ref:`get_collision_exceptions<class_PhysicsBody2D_method_get_collision_exceptions>`()
:ref:`Vector2<class_Vector2>` :ref:`get_gravity<class_PhysicsBody2D_method_get_gravity>`() |const|
:ref:`KinematicCollision2D<class_KinematicCollision2D>` :ref:`move_and_collide<class_PhysicsBody2D_method_move_and_collide>`(motion: :ref:`Vector2<class_Vector2>`, test_only: :ref:`bool<class_bool>` = false, safe_margin: :ref:`float<class_float>` = 0.08, recovery_as_collision: :ref:`bool<class_bool>` = false)
|void| :ref:`remove_collision_exception_with<class_PhysicsBody2D_method_remove_collision_exception_with>`(body: :ref:`Node<class_Node>`)
:ref:`bool<class_bool>` :ref:`test_move<class_PhysicsBody2D_method_test_move>`(from: :ref:`Transform2D<class_Transform2D>`, motion: :ref:`Vector2<class_Vector2>`, collision: :ref:`KinematicCollision2D<class_KinematicCollision2D>` = null, safe_margin: :ref:`float<class_float>` = 0.08, recovery_as_collision: :ref:`bool<class_bool>` = false)
.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Method Descriptions

.. rst-class:: classref-method

|void| add_collision_exception_with(body: :ref:`Node<class_Node>`) :ref:`🔗<class_PhysicsBody2D_method_add_collision_exception_with>`

Adds a body to the list of bodies that this body can't collide with.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Array<class_Array>`[:ref:`PhysicsBody2D<class_PhysicsBody2D>`] get_collision_exceptions() :ref:`🔗<class_PhysicsBody2D_method_get_collision_exceptions>`

Returns an array of nodes that were added as collision exceptions for this body.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Vector2<class_Vector2>` get_gravity() |const| :ref:`🔗<class_PhysicsBody2D_method_get_gravity>`

Returns the gravity vector computed from all sources that can affect the body, including all gravity overrides from :ref:`Area2D<class_Area2D>` nodes and the global world gravity.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`KinematicCollision2D<class_KinematicCollision2D>` move_and_collide(motion: :ref:`Vector2<class_Vector2>`, test_only: :ref:`bool<class_bool>` = false, safe_margin: :ref:`float<class_float>` = 0.08, recovery_as_collision: :ref:`bool<class_bool>` = false) :ref:`🔗<class_PhysicsBody2D_method_move_and_collide>`

Moves the body along the vector motion. In order to be frame rate independent in :ref:`Node._physics_process<class_Node_private_method__physics_process>` or :ref:`Node._process<class_Node_private_method__process>`, motion should be computed using delta.

Returns a :ref:`KinematicCollision2D<class_KinematicCollision2D>`, which contains information about the collision when stopped, or when touching another body along the motion.

If test_only is true, the body does not move but the would-be collision information is given.

safe_margin is the extra margin used for collision recovery (see :ref:`CharacterBody2D.safe_margin<class_CharacterBody2D_property_safe_margin>` for more details).

If recovery_as_collision is true, any depenetration from the recovery phase is also reported as a collision; this is used e.g. by :ref:`CharacterBody2D<class_CharacterBody2D>` for improving floor detection during floor snapping.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| remove_collision_exception_with(body: :ref:`Node<class_Node>`) :ref:`🔗<class_PhysicsBody2D_method_remove_collision_exception_with>`

Removes a body from the list of bodies that this body can't collide with.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` test_move(from: :ref:`Transform2D<class_Transform2D>`, motion: :ref:`Vector2<class_Vector2>`, collision: :ref:`KinematicCollision2D<class_KinematicCollision2D>` = null, safe_margin: :ref:`float<class_float>` = 0.08, recovery_as_collision: :ref:`bool<class_bool>` = false) :ref:`🔗<class_PhysicsBody2D_method_test_move>`

Checks for collisions without moving the body. In order to be frame rate independent in :ref:`Node._physics_process<class_Node_private_method__physics_process>` or :ref:`Node._process<class_Node_private_method__process>`, motion should be computed using delta.

Virtually sets the node's position, scale and rotation to that of the given :ref:`Transform2D<class_Transform2D>`, then tries to move the body along the vector motion. Returns true if a collision would stop the body from moving along the whole path.

collision is an optional object of type :ref:`KinematicCollision2D<class_KinematicCollision2D>`, which contains additional information about the collision when stopped, or when touching another body along the motion.

safe_margin is the extra margin used for collision recovery (see :ref:`CharacterBody2D.safe_margin<class_CharacterBody2D_property_safe_margin>` for more details).

If recovery_as_collision is true, any depenetration from the recovery phase is also reported as a collision; this is useful for checking whether the body would touch any other bodies.