PhysicsServer2D

Hereda: Object

Heredado por: PhysicsServer2DExtension

Una interfaz de servidor para el acceso de bajo nivel a la física 2D.

Descripción

PhysicsServer2D is the server responsible for all 2D physics. It can directly create and manipulate all physics objects:

  • A space is a self-contained world for a physics simulation. It contains bodies, areas, and joints. Its state can be queried for collision and intersection information, and several parameters of the simulation can be modified.

  • A shape is a geometric shape such as a circle, a rectangle, a capsule, or a polygon. It can be used for collision detection by adding it to a body/area, possibly with an extra transformation relative to the body/area's origin. Bodies/areas can have multiple (transformed) shapes added to them, and a single shape can be added to bodies/areas multiple times with different local transformations.

  • A body is a physical object which can be in static, kinematic, or rigid mode. Its state (such as position and velocity) can be queried and updated. A force integration callback can be set to customize the body's physics.

  • An area is a region in space which can be used to detect bodies and areas entering and exiting it. A body monitoring callback can be set to report entering/exiting body shapes, and similarly an area monitoring callback can be set. Gravity and damping can be overridden within the area by setting area parameters.

  • A joint is a constraint, either between two bodies or on one body relative to a point. Parameters such as the joint bias and the rest length of a spring joint can be adjusted.

Physics objects in PhysicsServer2D may be created and manipulated independently; they do not have to be tied to nodes in the scene tree.

Note: All the 2D physics nodes use the physics server internally. Adding a physics node to the scene tree will cause a corresponding physics object to be created in the physics server. A rigid body node registers a callback that updates the node's transform with the transform of the respective body object in the physics server (every physics update). An area node registers a callback to inform the area node about overlaps with the respective area object in the physics server. The raycast node queries the direct state of the relevant space in the physics server.

Métodos

void

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

void

area_attach_canvas_instance_id(area: RID, id: int)

void

area_attach_object_instance_id(area: RID, id: int)

void

area_clear_shapes(area: RID)

RID

area_create()

int

area_get_canvas_instance_id(area: RID) const

int

area_get_collision_layer(area: RID) const

int

area_get_collision_mask(area: RID) const

int

area_get_object_instance_id(area: RID) const

Variant

area_get_param(area: RID, param: AreaParameter) const

RID

area_get_shape(area: RID, shape_idx: int) const

int

area_get_shape_count(area: RID) const

Transform2D

area_get_shape_transform(area: RID, shape_idx: int) const

RID

area_get_space(area: RID) const

Transform2D

area_get_transform(area: RID) const

void

area_remove_shape(area: RID, shape_idx: int)

void

area_set_area_monitor_callback(area: RID, callback: Callable)

void

area_set_collision_layer(area: RID, layer: int)

void

area_set_collision_mask(area: RID, mask: int)

void

area_set_monitor_callback(area: RID, callback: Callable)

void

area_set_monitorable(area: RID, monitorable: bool)

void

area_set_param(area: RID, param: AreaParameter, value: Variant)

void

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

void

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

void

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

void

area_set_space(area: RID, space: RID)

void

area_set_transform(area: RID, transform: Transform2D)

void

body_add_collision_exception(body: RID, excepted_body: RID)

void

body_add_constant_central_force(body: RID, force: Vector2)

void

body_add_constant_force(body: RID, force: Vector2, position: Vector2 = Vector2(0, 0))

void

body_add_constant_torque(body: RID, torque: float)

void

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

void

body_apply_central_force(body: RID, force: Vector2)

void

body_apply_central_impulse(body: RID, impulse: Vector2)

void

body_apply_force(body: RID, force: Vector2, position: Vector2 = Vector2(0, 0))

void

body_apply_impulse(body: RID, impulse: Vector2, position: Vector2 = Vector2(0, 0))

void

body_apply_torque(body: RID, torque: float)

void

body_apply_torque_impulse(body: RID, impulse: float)

void

body_attach_canvas_instance_id(body: RID, id: int)

void

body_attach_object_instance_id(body: RID, id: int)

void

body_clear_shapes(body: RID)

RID

body_create()

int

body_get_canvas_instance_id(body: RID) const

int

body_get_collision_layer(body: RID) const

int

body_get_collision_mask(body: RID) const

float

body_get_collision_priority(body: RID) const

Vector2

body_get_constant_force(body: RID) const

float

body_get_constant_torque(body: RID) const

CCDMode

body_get_continuous_collision_detection_mode(body: RID) const

PhysicsDirectBodyState2D

body_get_direct_state(body: RID)

int

body_get_max_contacts_reported(body: RID) const

BodyMode

body_get_mode(body: RID) const

int

body_get_object_instance_id(body: RID) const

Variant

body_get_param(body: RID, param: BodyParameter) const

RID

body_get_shape(body: RID, shape_idx: int) const

int

body_get_shape_count(body: RID) const

Transform2D

body_get_shape_transform(body: RID, shape_idx: int) const

RID

body_get_space(body: RID) const

Variant

body_get_state(body: RID, state: BodyState) const

bool

body_is_omitting_force_integration(body: RID) const

void

body_remove_collision_exception(body: RID, excepted_body: RID)

void

body_remove_shape(body: RID, shape_idx: int)

void

body_reset_mass_properties(body: RID)

void

body_set_axis_velocity(body: RID, axis_velocity: Vector2)

void

body_set_collision_layer(body: RID, layer: int)

void

body_set_collision_mask(body: RID, mask: int)

void

body_set_collision_priority(body: RID, priority: float)

void

body_set_constant_force(body: RID, force: Vector2)

void

body_set_constant_torque(body: RID, torque: float)

void

body_set_continuous_collision_detection_mode(body: RID, mode: CCDMode)

void

body_set_force_integration_callback(body: RID, callable: Callable, userdata: Variant = null)

void

body_set_max_contacts_reported(body: RID, amount: int)

void

body_set_mode(body: RID, mode: BodyMode)

void

body_set_omit_force_integration(body: RID, enable: bool)

void

body_set_param(body: RID, param: BodyParameter, value: Variant)

void

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

void

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

void

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

void

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

void

body_set_space(body: RID, space: RID)

void

body_set_state(body: RID, state: BodyState, value: Variant)

void

body_set_state_sync_callback(body: RID, callable: Callable)

bool

body_test_motion(body: RID, parameters: PhysicsTestMotionParameters2D, result: PhysicsTestMotionResult2D = null)

RID

capsule_shape_create()

RID

circle_shape_create()

RID

concave_polygon_shape_create()

RID

convex_polygon_shape_create()

float

damped_spring_joint_get_param(joint: RID, param: DampedSpringParam) const

void

damped_spring_joint_set_param(joint: RID, param: DampedSpringParam, value: float)

void

free_rid(rid: RID)

int

get_process_info(process_info: ProcessInfo)

void

joint_clear(joint: RID)

RID

joint_create()

void

joint_disable_collisions_between_bodies(joint: RID, disable: bool)

float

joint_get_param(joint: RID, param: JointParam) const

JointType

joint_get_type(joint: RID) const

bool

joint_is_disabled_collisions_between_bodies(joint: RID) const

void

joint_make_damped_spring(joint: RID, anchor_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID = RID())

void

joint_make_groove(joint: RID, groove1_a: Vector2, groove2_a: Vector2, anchor_b: Vector2, body_a: RID = RID(), body_b: RID = RID())

void

joint_make_pin(joint: RID, anchor: Vector2, body_a: RID, body_b: RID = RID())

void

joint_set_param(joint: RID, param: JointParam, value: float)

bool

pin_joint_get_flag(joint: RID, flag: PinJointFlag) const

float

pin_joint_get_param(joint: RID, param: PinJointParam) const

void

pin_joint_set_flag(joint: RID, flag: PinJointFlag, enabled: bool)

void

pin_joint_set_param(joint: RID, param: PinJointParam, value: float)

RID

rectangle_shape_create()

RID

segment_shape_create()

RID

separation_ray_shape_create()

void

set_active(active: bool)

Variant

shape_get_data(shape: RID) const

ShapeType

shape_get_type(shape: RID) const

void

shape_set_data(shape: RID, data: Variant)

RID

space_create()

PhysicsDirectSpaceState2D

space_get_direct_state(space: RID)

float

space_get_param(space: RID, param: SpaceParameter) const

bool

space_is_active(space: RID) const

void

space_set_active(space: RID, active: bool)

void

space_set_param(space: RID, param: SpaceParameter, value: float)

RID

world_boundary_shape_create()


Enumeraciones

enum SpaceParameter: 🔗

SpaceParameter SPACE_PARAM_CONTACT_RECYCLE_RADIUS = 0

Constant to set/get the maximum distance a pair of bodies has to move before their collision status has to be recalculated. The default value of this parameter is ProjectSettings.physics/2d/solver/contact_recycle_radius.

SpaceParameter SPACE_PARAM_CONTACT_MAX_SEPARATION = 1

Constant to set/get the maximum distance a shape can be from another before they are considered separated and the contact is discarded. The default value of this parameter is ProjectSettings.physics/2d/solver/contact_max_separation.

SpaceParameter SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION = 2

Constant to set/get the maximum distance a shape can penetrate another shape before it is considered a collision. The default value of this parameter is ProjectSettings.physics/2d/solver/contact_max_allowed_penetration.

SpaceParameter SPACE_PARAM_CONTACT_DEFAULT_BIAS = 3

Constant to set/get the default solver bias for all physics contacts. A solver bias is a factor controlling how much two objects "rebound", after overlapping, to avoid leaving them in that state because of numerical imprecision. The default value of this parameter is ProjectSettings.physics/2d/solver/default_contact_bias.

SpaceParameter SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD = 4

Constante para establecer/obtener el umbral de velocidad lineal de actividad. Un cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal como para la angular se pondrá a dormir después del tiempo dado. El valor predeterminado de este parámetro es ProjectSettings.physics/2d/sleep_threshold_linear.

SpaceParameter SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD = 5

Constante para establecer/obtener el umbral de velocidad angular de actividad. Un cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal como para la angular se pondrá a dormir después del tiempo dado. El valor predeterminado de este parámetro es ProjectSettings.physics/2d/sleep_threshold_angular.

SpaceParameter SPACE_PARAM_BODY_TIME_TO_SLEEP = 6

Constante para establecer/obtener el tiempo máximo de actividad. Un cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal como para la angular se pondrá a dormir después de este tiempo. El valor predeterminado de este parámetro es ProjectSettings.physics/2d/time_before_sleep.

SpaceParameter SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS = 7

Constante para establecer/obtener el sesgo del solucionador por defecto para todas las restricciones de la física. Un sesgo del solucionador es un factor que controla cuánto "rebotan" dos objetos, después de violar una restricción, para evitar dejarlos en ese estado debido a la imprecisión numérica.

SpaceParameter SPACE_PARAM_SOLVER_ITERATIONS = 8

Constant to set/get the number of solver iterations for all contacts and constraints. The greater the number of iterations, the more accurate the collisions will be. However, a greater number of iterations requires more CPU power, which can decrease performance. The default value of this parameter is ProjectSettings.physics/2d/solver/solver_iterations.


enum ShapeType: 🔗

ShapeType SHAPE_WORLD_BOUNDARY = 0

Esta es la constante para crear formas de límites del mundo. Una forma de límite del mundo es una línea infinita con un punto de origen y una normal. Por lo tanto, se puede utilizar para comprobaciones de delante/detrás.

ShapeType SHAPE_SEPARATION_RAY = 1

Esta es la constante para crear formas de rayo de separación. Un rayo de separación se define por una longitud y se separa de lo que está tocando su punto final lejano. Útil para los controladores de personajes.

ShapeType SHAPE_SEGMENT = 2

Esta es la constante para crear formas de segmentos. Una forma de segmento es una línea finita desde un punto A hasta un punto B. Se puede comprobar si hay intersecciones.

ShapeType SHAPE_CIRCLE = 3

Esta es la constante para crear formas de círculos. Una forma de círculo sólo tiene un radio. Puede ser usado para intersecciones y controles internos y externos.

ShapeType SHAPE_RECTANGLE = 4

Esta es la constante para crear formas de rectángulo. Una forma de rectángulo se define por un ancho y una altura. Se puede usar para intersecciones y controles internos y externos.

ShapeType SHAPE_CAPSULE = 5

Esta es la constante para crear formas de cápsulas. La forma de una cápsula se define por un radio y una longitud. Se puede usar para intersecciones y controles internos y externos.

ShapeType SHAPE_CONVEX_POLYGON = 6

Esta es la constante para crear formas de polígonos convexos. Un polígono se define por una lista de puntos. Se puede utilizar para intersecciones y comprobaciones de dentro/fuera.

ShapeType SHAPE_CONCAVE_POLYGON = 7

Esta es la constante para crear formas poligonales cóncavas. Un polígono se define por una lista de puntos. Puede ser usado para comprobar las intersecciones, pero no para comprobar el interior/exterior.

ShapeType SHAPE_CUSTOM = 8

Esta constante es utilizada internamente por el motor. Cualquier intento de crear este tipo de forma resulta en un error.


enum AreaParameter: 🔗

AreaParameter AREA_PARAM_GRAVITY_OVERRIDE_MODE = 0

Constante para establecer/obtener el modo de sobrescritura de gravedad en un área. Véase AreaSpaceOverrideMode para ver los valores posibles. El valor por defecto de este parámetro es AREA_SPACE_OVERRIDE_DISABLED.

AreaParameter AREA_PARAM_GRAVITY = 1

Constante para establecer/obtener la fuerza de gravedad en un área. El valor por defecto de este parámetro es 9.80665.

AreaParameter AREA_PARAM_GRAVITY_VECTOR = 2

Constante para establecer/obtener el vector/centro de gravedad en un área. El valor por defecto de este parámetro es Vector2(0, -1).

AreaParameter AREA_PARAM_GRAVITY_IS_POINT = 3

Constante para establecer/obtener si el vector de gravedad de un área es una dirección, o un punto central. El valor por defecto de este parámetro es false.

AreaParameter AREA_PARAM_GRAVITY_POINT_UNIT_DISTANCE = 4

Constante para establecer/obtener la distancia a la que la fuerza de la gravedad es igual a la gravedad controlada por AREA_PARAM_GRAVITY. Por ejemplo, en un planeta de 100 píxeles de radio con una gravedad superficial de 4.0 px/s², establece la gravedad a 4.0 y la distancia de unidad a 100.0. La gravedad tendrá una caída de acuerdo con la ley del inverso del cuadrado, por lo que en el ejemplo, a 200 píxeles del centro la gravedad será de 1.0 px/s² (el doble de la distancia, 1/4 de la gravedad), a 50 píxeles será de 16.0 px/s² (la mitad de la distancia, 4 veces la gravedad), y así sucesivamente.

Lo anterior solo es cierto cuando la distancia de unidad es un número positivo. Cuando la distancia de unidad se establece en 0.0, la gravedad será constante independientemente de la distancia. El valor por defecto de este parámetro es 0.0.

AreaParameter AREA_PARAM_LINEAR_DAMP_OVERRIDE_MODE = 5

Constante para establecer/obtener el modo de sobrescritura de la amortiguación lineal en un área. Véase AreaSpaceOverrideMode para ver los valores posibles. El valor por defecto de este parámetro es AREA_SPACE_OVERRIDE_DISABLED.

AreaParameter AREA_PARAM_LINEAR_DAMP = 6

Constante para establecer/obtener el factor de amortiguación lineal de un área. El valor por defecto de este parámetro es 0.1.

AreaParameter AREA_PARAM_ANGULAR_DAMP_OVERRIDE_MODE = 7

Constante para establecer/obtener el modo de sobrescritura de amortiguación angular en un área. Véase AreaSpaceOverrideMode para ver los valores posibles. El valor por defecto de este parámetro es AREA_SPACE_OVERRIDE_DISABLED.

AreaParameter AREA_PARAM_ANGULAR_DAMP = 8

Constante para establecer/obtener el factor de amortiguación angular de un área. El valor por defecto de este parámetro es 1.0.

AreaParameter AREA_PARAM_PRIORITY = 9

Constante para establecer/obtener la prioridad (orden de procesamiento) de un área. El valor por defecto de este parámetro es 0.


enum AreaSpaceOverrideMode: 🔗

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_DISABLED = 0

Esta zona no afecta a la gravedad/humedad. Estas son generalmente áreas que existen sólo para detectar colisiones, y objetos que entran o salen de ellas.

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_COMBINE = 1

Esta área añade sus valores de gravedad/humedad a lo que se ha calculado hasta ahora. De esta manera, muchas áreas superpuestas pueden combinar su física para hacer efectos interesantes.

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_COMBINE_REPLACE = 2

Esta área añade sus valores de gravedad/amortiguación a lo que se ha calculado hasta ahora. Luego deja de tener en cuenta el resto de las áreas, incluso la predeterminada.

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_REPLACE = 3

Esta área reemplaza cualquier gravedad/amortiguación, incluso la predeterminada, y deja de tener en cuenta el resto de las áreas.

AreaSpaceOverrideMode AREA_SPACE_OVERRIDE_REPLACE_COMBINE = 4

Esta área reemplaza cualquier gravedad/amortiguación calculada hasta ahora, pero sigue calculando el resto de las áreas, hasta la predeterminada.


enum BodyMode: 🔗

BodyMode BODY_MODE_STATIC = 0

Constante para cuerpos estáticos. En este modo, un cuerpo solo puede ser movido por el código del usuario y no colisiona con otros cuerpos a lo largo de su trayectoria cuando se mueve.

BodyMode BODY_MODE_KINEMATIC = 1

Constante para cuerpos cinemáticos. En este modo, un cuerpo solo puede ser movido por el código del usuario y colisiona con otros cuerpos a lo largo de su trayectoria.

BodyMode BODY_MODE_RIGID = 2

Constante para cuerpos rígidos. En este modo, un cuerpo puede ser empujado por otros cuerpos y se le aplican fuerzas.

BodyMode BODY_MODE_RIGID_LINEAR = 3

Constante para cuerpos rígidos lineales. En este modo, un cuerpo no puede rotar, y solo su velocidad lineal se ve afectada por fuerzas externas.


enum BodyParameter: 🔗

BodyParameter BODY_PARAM_BOUNCE = 0

Constante para establecer/obtener el factor de rebote de un cuerpo. El valor por defecto de este parámetro es 0.0.

BodyParameter BODY_PARAM_FRICTION = 1

Constante para establecer/obtener la fricción de un cuerpo. El valor por defecto de este parámetro es 1.0.

BodyParameter BODY_PARAM_MASS = 2

Constante para establecer/obtener la masa de un cuerpo. El valor por defecto de este parámetro es 1.0. Si el modo del cuerpo se establece en BODY_MODE_RIGID, entonces establecer este parámetro tendrá los siguientes efectos adicionales:

  • Si el parámetro BODY_PARAM_CENTER_OF_MASS nunca ha sido establecido explícitamente, entonces el valor de ese parámetro será recalculado basándose en las formas del cuerpo.

  • Si el parámetro BODY_PARAM_INERTIA se establece en un valor <= 0.0, entonces el valor de ese parámetro será recalculado basándose en las formas, masa y centro de masa del cuerpo.

BodyParameter BODY_PARAM_INERTIA = 3

Constante para establecer/obtener la inercia de un cuerpo. El valor por defecto de este parámetro es 0.0. Si la inercia del cuerpo se establece a un valor <= 0.0, entonces la inercia será recalculada basándose en las formas, masa y centro de masa del cuerpo.

BodyParameter BODY_PARAM_CENTER_OF_MASS = 4

Constante para establecer/obtener la posición del centro de masa de un cuerpo en el sistema de coordenadas local del cuerpo. El valor por defecto de este parámetro es Vector2(0, 0). Si este parámetro nunca se establece explícitamente, se recalcula en función de las formas del cuerpo al establecer el parámetro BODY_PARAM_MASS o al llamar a body_set_space().

BodyParameter BODY_PARAM_GRAVITY_SCALE = 5

Constante para establecer/obtener el multiplicador de gravedad de un cuerpo. El valor por defecto de este parámetro es 1.0.

BodyParameter BODY_PARAM_LINEAR_DAMP_MODE = 6

Constante para establecer/obtener el modo de amortiguación lineal de un cuerpo. Véase BodyDampMode para ver los valores posibles. El valor predeterminado de este parámetro es BODY_DAMP_MODE_COMBINE.

BodyParameter BODY_PARAM_ANGULAR_DAMP_MODE = 7

Constante para establecer/obtener el modo de amortiguación angular de un cuerpo. Véase BodyDampMode para ver los valores posibles. El valor predeterminado de este parámetro es BODY_DAMP_MODE_COMBINE.

BodyParameter BODY_PARAM_LINEAR_DAMP = 8

Constante para establecer/obtener el factor de amortiguación lineal de un cuerpo. El valor por defecto de este parámetro es 0.0.

BodyParameter BODY_PARAM_ANGULAR_DAMP = 9

Constante para establecer/obtener el factor de amortiguación angular de un cuerpo. El valor por defecto de este parámetro es 0.0.

BodyParameter BODY_PARAM_MAX = 10

Representa el tamaño del enum BodyParameter.


enum BodyDampMode: 🔗

BodyDampMode BODY_DAMP_MODE_COMBINE = 0

El valor de amortiguación del cuerpo se suma a cualquier valor establecido en las áreas o al valor por defecto.

BodyDampMode BODY_DAMP_MODE_REPLACE = 1

El valor de amortiguación del cuerpo reemplaza cualquier valor establecido en las áreas o al valor por defecto.


enum BodyState: 🔗

BodyState BODY_STATE_TRANSFORM = 0

Constante para establecer/obtener la matriz de transformación de la corriente del cuerpo.

BodyState BODY_STATE_LINEAR_VELOCITY = 1

Constante para establecer/obtener la actual velocidad lineal del cuerpo.

BodyState BODY_STATE_ANGULAR_VELOCITY = 2

Constante para establecer/obtener la actual velocidad angular del cuerpo.

BodyState BODY_STATE_SLEEPING = 3

Constante para dormir/despertar un cuerpo, o para saber si está durmiendo.

BodyState BODY_STATE_CAN_SLEEP = 4

Constante para establecer/obtener si el cuerpo puede dormir.


enum JointType: 🔗

JointType JOINT_TYPE_PIN = 0

Constante para crear articulaciones de alfileres.

JointType JOINT_TYPE_GROOVE = 1

Constantemente para crear uniones ranuradas.

JointType JOINT_TYPE_DAMPED_SPRING = 2

Constante para crear juntas de resorte amortiguadas.

JointType JOINT_TYPE_MAX = 3

Representa el tamaño del enum JointType.


enum JointParam: 🔗

JointParam JOINT_PARAM_BIAS = 0

Constante para establecer/obtener la rapidez con la que la articulación tira de los cuerpos hacia atrás para satisfacer la restricción de la articulación. Cuanto menor sea el valor, más podrán tirar los dos cuerpos de la articulación. El valor por defecto de este parámetro es 0.0.

Nota: En las físicas de Godot, este parámetro solo se utiliza para las articulaciones de pasador y de ranura.

JointParam JOINT_PARAM_MAX_BIAS = 1

Constante para establecer/obtener la velocidad máxima con la que la articulación puede aplicar correcciones. El valor por defecto de este parámetro es 3.40282e+38.

Nota: En las físicas de Godot, este parámetro solo se utiliza para articulaciones de ranura.

JointParam JOINT_PARAM_MAX_FORCE = 2

Constante para establecer/obtener la fuerza máxima que la articulación puede usar para actuar sobre los dos cuerpos. El valor por defecto de este parámetro es 3.40282e+38.

Nota: En las físicas de Godot, este parámetro solo se utiliza para articulaciones de ranura.


enum PinJointParam: 🔗

PinJointParam PIN_JOINT_SOFTNESS = 0

Constante para establecer/obtener cuánto se puede flexionar la unión de la articulación de pasador. El valor por defecto de este parámetro es 0.0.

PinJointParam PIN_JOINT_LIMIT_UPPER = 1

La rotación máxima alrededor del pin.

PinJointParam PIN_JOINT_LIMIT_LOWER = 2

La rotación mínima alrededor del pin.

PinJointParam PIN_JOINT_MOTOR_TARGET_VELOCITY = 3

Velocidad objetivo para el motor. En radianes por segundo.


enum PinJointFlag: 🔗

PinJointFlag PIN_JOINT_FLAG_ANGULAR_LIMIT_ENABLED = 0

Si es true, el pasador tiene una rotación máxima y mínima.

PinJointFlag PIN_JOINT_FLAG_MOTOR_ENABLED = 1

Si es true, un motor gira el pasador.


enum DampedSpringParam: 🔗

DampedSpringParam DAMPED_SPRING_REST_LENGTH = 0

Establece la longitud de reposo de la articulación de resorte. La articulación siempre intentará volver a esta longitud cuando se separe. El valor por defecto de este parámetro es la distancia entre los puntos de anclaje de la articulación.

DampedSpringParam DAMPED_SPRING_STIFFNESS = 1

Establece la rigidez de la articulación de resorte. La articulación aplica una fuerza igual a la rigidez multiplicada por la distancia desde su longitud de reposo. El valor por defecto de este parámetro es 20.0.

DampedSpringParam DAMPED_SPRING_DAMPING = 2

Establece la relación de amortiguación de la articulación de resorte. Un valor de 0 indica un resorte sin amortiguación, mientras que 1 hace que el sistema alcance el equilibrio lo más rápido posible (amortiguación crítico). El valor por defecto de este parámetro es 1.5.


enum CCDMode: 🔗

CCDMode CCD_MODE_DISABLED = 0

Desactiva la detección de colisión continua. Es la forma más rápida de detectar colisiones corporales, pero puede pasar por alto objetos pequeños y/o que se mueven rápidamente.

CCDMode CCD_MODE_CAST_RAY = 1

Permite la detección continua de colisiones mediante la emisión de rayos. Es más rápido que el "shapecasting", pero menos preciso.

CCDMode CCD_MODE_CAST_SHAPE = 2

Permite la detección continua de colisiones mediante el modelado. Es el método más lento de CCD, y el más preciso.


enum AreaBodyStatus: 🔗

AreaBodyStatus AREA_BODY_ADDED = 0

El valor del primer parámetro y la función de retrollamada de área recibe, cuando un objeto entra en una de sus formas.

AreaBodyStatus AREA_BODY_REMOVED = 1

El valor del primer parámetro y la función de llamada de área recibe, cuando un objeto sale de una de sus formas.


enum ProcessInfo: 🔗

ProcessInfo INFO_ACTIVE_OBJECTS = 0

Constante para obtener el número de objetos que no están durmiendo.

ProcessInfo INFO_COLLISION_PAIRS = 1

Constante para obtener el número de posibles colisiones.

ProcessInfo INFO_ISLAND_COUNT = 2

Constante para obtener el número de regiones espaciales donde podría ocurrir una colisión.


Descripciones de Métodos

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

Añade una forma al área, con la transformación local dada. La forma (junto con sus propiedades transform y disabled) se añade a un array de formas, y las formas de un área se referencian normalmente por su índice en este array.


void area_attach_canvas_instance_id(area: RID, id: int) 🔗

Adjunta el ObjectID de un canvas al área. Utiliza Object.get_instance_id() para obtener el ObjectID de un CanvasLayer.


void area_attach_object_instance_id(area: RID, id: int) 🔗

Adjunta el ObjectID de un Object al área. Utiliza Object.get_instance_id() para obtener el ObjectID de un CollisionObject2D.


void area_clear_shapes(area: RID) 🔗

Elimina todas las formas del área. Esto no elimina las formas en sí mismas, por lo que pueden seguir utilizándose en otra parte o volverse a agregar más tarde.


RID area_create() 🔗

Creates a 2D area object in the physics server, and returns the RID that identifies it. The default settings for the created area include a collision layer and mask set to 1, and monitorable set to false.

Use area_add_shape() to add shapes to it, use area_set_transform() to set its transform, and use area_set_space() to add the area to a space. If you want the area to be detectable use area_set_monitorable().


int area_get_canvas_instance_id(area: RID) const 🔗

Devuelve el ObjectID del canvas adjunto al área. Utiliza @GlobalScope.instance_from_id() para recuperar un CanvasLayer de un ObjectID distinto de cero.


int area_get_collision_layer(area: RID) const 🔗

Devuelve la capa o capas físicas a las que pertenece el área, como una máscara de bits.


int area_get_collision_mask(area: RID) const 🔗

Devuelve la capa o capas físicas con las que el área puede entrar en contacto, como una máscara de bits.


int area_get_object_instance_id(area: RID) const 🔗

Devuelve el ObjectID adjunto al área. Utiliza @GlobalScope.instance_from_id() para recuperar un Object de un ObjectID distinto de cero.


Variant area_get_param(area: RID, param: AreaParameter) const 🔗

Devuelve el valor del parámetro de área dado.


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

Devuelve el RID de la forma con el índice dado en el array de formas del área.


int area_get_shape_count(area: RID) const 🔗

Devuelve el número de formas agregadas al área.


Transform2D area_get_shape_transform(area: RID, shape_idx: int) const 🔗

Devuelve el array de transformación local de la forma con el índice dado en el array de formas del área.


RID area_get_space(area: RID) const 🔗

Devuelve el RID del espacio asignado al área. Devuelve un RID vacío si no se ha asignado ningún espacio.


Transform2D area_get_transform(area: RID) const 🔗

Devuelve la matriz de transformación del área.


void area_remove_shape(area: RID, shape_idx: int) 🔗

Elimina la forma con el índice dado del array de formas del área. La forma en sí no se elimina, por lo que puede seguir utilizándose en otra parte o volver a añadirse más tarde. Como resultado de esta operación, las formas del área que solían tener índices mayores que shape_idx verán su índice disminuido en uno.


void area_set_area_monitor_callback(area: RID, callback: Callable) 🔗

Sets the area's area monitor callback. This callback will be called when any other (shape of an) area enters or exits (a shape of) the given area, and must take the following five parameters:

  1. an integer status: either AREA_BODY_ADDED or AREA_BODY_REMOVED depending on whether the other area's shape entered or exited the area,

  2. an RID area_rid: the RID of the other area that entered or exited the area,

  3. an integer instance_id: the ObjectID attached to the other area,

  4. an integer area_shape_idx: the index of the shape of the other area that entered or exited the area,

  5. an integer self_shape_idx: the index of the shape of the area where the other area entered or exited.

By counting (or keeping track of) the shapes that enter and exit, it can be determined if an area (with all its shapes) is entering for the first time or exiting for the last time.


void area_set_collision_layer(area: RID, layer: int) 🔗

Asigna el área a una o varias capas físicas, mediante una máscara de bits.


void area_set_collision_mask(area: RID, mask: int) 🔗

Establece qué capas físicas monitoreará el área, mediante una máscara de bits.


void area_set_monitor_callback(area: RID, callback: Callable) 🔗

Sets the area's body monitor callback. This callback will be called when any other (shape of a) body enters or exits (a shape of) the given area, and must take the following five parameters:

  1. an integer status: either AREA_BODY_ADDED or AREA_BODY_REMOVED depending on whether the other body shape entered or exited the area,

  2. an RID body_rid: the RID of the body that entered or exited the area,

  3. an integer instance_id: the ObjectID attached to the body,

  4. an integer body_shape_idx: the index of the shape of the body that entered or exited the area,

  5. an integer self_shape_idx: the index of the shape of the area where the body entered or exited.

By counting (or keeping track of) the shapes that enter and exit, it can be determined if a body (with all its shapes) is entering for the first time or exiting for the last time.


void area_set_monitorable(area: RID, monitorable: bool) 🔗

Establece si el área es monitoreable o no. Si monitorable es true, se llamará al callback de monitoreo de área de otras áreas cuando esta área entre o salga de ellas.


void area_set_param(area: RID, param: AreaParameter, value: Variant) 🔗

Establece el valor del parámetro de área dado.


void area_set_shape(area: RID, shape_idx: int, shape: RID) 🔗

Reemplaza la forma del área en el índice dado por otra forma, sin afectar las propiedades transform y disabled en el mismo índice.


void area_set_shape_disabled(area: RID, shape_idx: int, disabled: bool) 🔗

Establece la propiedad disabled de la forma del área con el índice dado. Si disabled es true, entonces la forma no detectará otras formas que entren o salgan de ella.


void area_set_shape_transform(area: RID, shape_idx: int, transform: Transform2D) 🔗

Sets the local transform matrix of the area's shape with the given index.


void area_set_space(area: RID, space: RID) 🔗

Añade el área al espacio dado, después de eliminar el área del espacio asignado previamente (si lo hay).

Nota: Para eliminar un área de un espacio sin añadirla inmediatamente de nuevo en otro lugar, utiliza PhysicsServer2D.area_set_space(area, RID()).


void area_set_transform(area: RID, transform: Transform2D) 🔗

Establece la matriz de transformación del área.


void body_add_collision_exception(body: RID, excepted_body: RID) 🔗

Añade excepted_body a la lista de excepciones de colisión del cuerpo, para que se ignoren las colisiones con él.


void body_add_constant_central_force(body: RID, force: Vector2) 🔗

Adds a constant directional force to the body. The force does not affect rotation. The force remains applied over time until cleared with PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0)).

This is equivalent to using body_add_constant_force() at the body's center of mass.


void body_add_constant_force(body: RID, force: Vector2, position: Vector2 = Vector2(0, 0)) 🔗

Adds a constant positioned force to the body. The force can affect rotation if position is different from the body's center of mass. The force remains applied over time until cleared with PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0)).

position is the offset from the body origin in global coordinates.


void body_add_constant_torque(body: RID, torque: float) 🔗

Adds a constant rotational force to the body. The force does not affect position. The force remains applied over time until cleared with PhysicsServer2D.body_set_constant_torque(body, 0).


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

Adds a shape to the area, with the given local transform. The shape (together with its transform and disabled properties) is added to an array of shapes, and the shapes of a body are usually referenced by their index in this array.


void body_apply_central_force(body: RID, force: Vector2) 🔗

Applies a directional force to the body, at the body's center of mass. The force does not affect rotation. A force is time dependent and meant to be applied every physics update.

This is equivalent to using body_apply_force() at the body's center of mass.


void body_apply_central_impulse(body: RID, impulse: Vector2) 🔗

Applies a directional impulse to the body, at the body's center of mass. The impulse does not affect rotation.

An impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the "_force" functions otherwise).

This is equivalent to using body_apply_impulse() at the body's center of mass.


void body_apply_force(body: RID, force: Vector2, position: Vector2 = Vector2(0, 0)) 🔗

Applies a positioned force to the body. The force can affect rotation if position is different from the body's center of mass. A force is time dependent and meant to be applied every physics update.

position is the offset from the body origin in global coordinates.


void body_apply_impulse(body: RID, impulse: Vector2, position: Vector2 = Vector2(0, 0)) 🔗

Applies a positioned impulse to the body. The impulse can affect rotation if position is different from the body's center of mass.

An impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the "_force" functions otherwise).

position is the offset from the body origin in global coordinates.


void body_apply_torque(body: RID, torque: float) 🔗

Aplica una fuerza rotacional al cuerpo. La fuerza no afecta la posición. Una fuerza depende del tiempo y está pensada para ser aplicada en cada actualización de la física.


void body_apply_torque_impulse(body: RID, impulse: float) 🔗

Applies a rotational impulse to the body. The impulse does not affect position.

An impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the "_force" functions otherwise).


void body_attach_canvas_instance_id(body: RID, id: int) 🔗

Adjunta el ObjectID de un canvas al cuerpo. Utiliza Object.get_instance_id() para obtener el ObjectID de un CanvasLayer.


void body_attach_object_instance_id(body: RID, id: int) 🔗

Adjunta el ObjectID de un Object al cuerpo. Utiliza Object.get_instance_id() para obtener el ObjectID de un CollisionObject2D.


void body_clear_shapes(body: RID) 🔗

Elimina todas las formas del cuerpo. Esto no elimina las formas en sí mismas, por lo que pueden seguir utilizándose en otra parte o volver a añadirse más tarde.


RID body_create() 🔗

Crea un objeto de cuerpo 2D en el servidor de física, y devuelve el RID que lo identifica. La configuración predeterminada para el área creada incluye una capa de colisión y una máscara establecida en 1, y el modo del cuerpo establecido en BODY_MODE_RIGID.

Utiliza body_add_shape() para añadirle formas, utiliza body_set_state() para establecer su transformación, y utiliza body_set_space() para añadir el cuerpo a un espacio.


int body_get_canvas_instance_id(body: RID) const 🔗

Devuelve el ObjectID del canvas adjunto al cuerpo. Utiliza @GlobalScope.instance_from_id() para recuperar un CanvasLayer de un ObjectID distinto de cero.


int body_get_collision_layer(body: RID) const 🔗

Devuelve la capa o capas físicas a las que pertenece el cuerpo, como una máscara de bits.


int body_get_collision_mask(body: RID) const 🔗

Devuelve la capa o capas físicas con las que el cuerpo puede colisionar, como una máscara de bits.


float body_get_collision_priority(body: RID) const 🔗

Devuelve la prioridad de colisión del cuerpo. Esto se utiliza en la fase de despenetración de body_test_motion(). Cuanto mayor sea la prioridad, menor será la penetración en el cuerpo.


Vector2 body_get_constant_force(body: RID) const 🔗

Devuelve la fuerza posicional constante total del cuerpo aplicada durante cada actualización de la física.

Véase body_add_constant_force() y body_add_constant_central_force().


float body_get_constant_torque(body: RID) const 🔗

Devuelve la fuerza rotacional constante total del cuerpo aplicada durante cada actualización de la física.

Véase body_add_constant_torque().


CCDMode body_get_continuous_collision_detection_mode(body: RID) const 🔗

Returns the body's continuous collision detection mode.


PhysicsDirectBodyState2D body_get_direct_state(body: RID) 🔗

Devuelve el PhysicsDirectBodyState2D del cuerpo. Devuelve null si el cuerpo es destruido o no está asignado a un espacio.


int body_get_max_contacts_reported(body: RID) const 🔗

Devuelve el número máximo de contactos que el cuerpo puede reportar. Véase body_set_max_contacts_reported().


BodyMode body_get_mode(body: RID) const 🔗

Devuelve el modo de cuerpo.


int body_get_object_instance_id(body: RID) const 🔗

Devuelve el ObjectID adjunto al cuerpo. Utiliza @GlobalScope.instance_from_id() para recuperar un Object de un ObjectID distinto de cero.


Variant body_get_param(body: RID, param: BodyParameter) const 🔗

Devuelve el valor del parámetro del cuerpo dado.


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

Devuelve el RID de la forma con el índice dado en el array de formas del cuerpo.


int body_get_shape_count(body: RID) const 🔗

Devuelve el número de formas añadidas al cuerpo.


Transform2D body_get_shape_transform(body: RID, shape_idx: int) const 🔗

Devuelve el array de transformación local de la forma con el índice dado en el array de formas del área.


RID body_get_space(body: RID) const 🔗

Returns the RID of the space assigned to the body. Returns an empty RID if no space is assigned.


Variant body_get_state(body: RID, state: BodyState) const 🔗

Devuelve el valor del estado dado del cuerpo.


bool body_is_omitting_force_integration(body: RID) const 🔗

Devuelve true si el cuerpo está omitiendo la integración de fuerza estándar. Véase body_set_omit_force_integration().


void body_remove_collision_exception(body: RID, excepted_body: RID) 🔗

Elimina excepted_body de la lista de excepciones de colisión del cuerpo, de modo que las colisiones con él ya no se ignoran.


void body_remove_shape(body: RID, shape_idx: int) 🔗

Elimina la forma con el índice dado del array de formas del cuerpo. La forma en sí no se elimina, por lo que se puede seguir utilizando en otro lugar o volver a añadirse más tarde. Como resultado de esta operación, las formas del cuerpo que solían tener índices mayores que shape_idx verán su índice disminuido en uno.


void body_reset_mass_properties(body: RID) 🔗

Restaura la inercia y el centro de masa predeterminados del cuerpo en función de sus formas. Esto deshace cualquier valor personalizado establecido previamente mediante body_set_param().


void body_set_axis_velocity(body: RID, axis_velocity: Vector2) 🔗

Modifica la velocidad lineal del cuerpo para que su proyección al eje axis_velocity.normalized() sea exactamente axis_velocity.length(). Esto es útil para el comportamiento de salto.


void body_set_collision_layer(body: RID, layer: int) 🔗

Establece la capa o capas físicas a las que pertenece el cuerpo, mediante una máscara de bits.


void body_set_collision_mask(body: RID, mask: int) 🔗

Establece la capa o capas físicas con las que el cuerpo puede colisionar, mediante una máscara de bits.


void body_set_collision_priority(body: RID, priority: float) 🔗

Establece la prioridad de colisión del cuerpo. Se utiliza en la fase de despenetración de body_test_motion(). Cuanto mayor sea la prioridad, menor será la penetración en el cuerpo.


void body_set_constant_force(body: RID, force: Vector2) 🔗

Establece la fuerza posicional constante total del cuerpo aplicada durante cada actualización de la física.

Véase body_add_constant_force() y body_add_constant_central_force().


void body_set_constant_torque(body: RID, torque: float) 🔗

Establece la fuerza rotacional constante total del cuerpo aplicada durante cada actualización de la física.

Véase body_add_constant_torque().


void body_set_continuous_collision_detection_mode(body: RID, mode: CCDMode) 🔗

Establece el modo de detección de colisión continua.

La detección de colisión continua intenta predecir dónde colisionaría un cuerpo en movimiento entre las actualizaciones de la física, en lugar de moverlo y corregir su movimiento si colisiona.


void body_set_force_integration_callback(body: RID, callable: Callable, userdata: Variant = null) 🔗

Sets the body's custom force integration callback function to callable. Use an empty Callable (Callable()) to clear the custom callback.

The function callable will be called every physics tick, before the standard force integration (see body_set_omit_force_integration()). It can be used for example to update the body's linear and angular velocity based on contact with other bodies.

If userdata is not null, the function callable must take the following two parameters:

  1. state: a PhysicsDirectBodyState2D used to retrieve and modify the body's state,

  2. userdata: a Variant; its value will be the userdata passed into this method.

If userdata is null, then callable must take only the state parameter.


void body_set_max_contacts_reported(body: RID, amount: int) 🔗

Sets the maximum number of contacts that the body can report. If amount is greater than zero, then the body will keep track of at most this many contacts with other bodies.


void body_set_mode(body: RID, mode: BodyMode) 🔗

Establece el modo de cuerpo.


void body_set_omit_force_integration(body: RID, enable: bool) 🔗

Sets whether the body omits the standard force integration. If enable is true, the body will not automatically use applied forces, torques, and damping to update the body's linear and angular velocity. In this case, body_set_force_integration_callback() can be used to manually update the linear and angular velocity instead.

This method is called when the property RigidBody2D.custom_integrator is set.


void body_set_param(body: RID, param: BodyParameter, value: Variant) 🔗

Establece el valor del parámetro del cuerpo dado.


void body_set_shape(body: RID, shape_idx: int, shape: RID) 🔗

Reemplaza la forma del cuerpo en el índice dado por otra forma, sin afectar las propiedades transform, disabled y de colisión unidireccional en el mismo índice.


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

Sets the one-way collision properties of the body's shape with the given index. If enable is true, the one-way collision direction given by the shape's local upward axis body_get_shape_transform(body, shape_idx).y will be used to ignore collisions with the shape in the opposite direction, and to ensure depenetration of kinematic bodies happens in this direction.


void body_set_shape_disabled(body: RID, shape_idx: int, disabled: bool) 🔗

Establece la propiedad disabled de la forma del cuerpo con el índice dado. Si disabled es true, entonces la forma será ignorada en toda la detección de colisiones.


void body_set_shape_transform(body: RID, shape_idx: int, transform: Transform2D) 🔗

Establece la matriz de transformación local de la forma del cuerpo con el índice dado.


void body_set_space(body: RID, space: RID) 🔗

Adds the body to the given space, after removing the body from the previously assigned space (if any). If the body's mode is set to BODY_MODE_RIGID, then adding the body to a space will have the following additional effects:

  • If the parameter BODY_PARAM_CENTER_OF_MASS has never been set explicitly, then the value of that parameter will be recalculated based on the body's shapes.

  • If the parameter BODY_PARAM_INERTIA is set to a value <= 0.0, then the value of that parameter will be recalculated based on the body's shapes, mass, and center of mass.

Note: To remove a body from a space without immediately adding it back elsewhere, use PhysicsServer2D.body_set_space(body, RID()).


void body_set_state(body: RID, state: BodyState, value: Variant) 🔗

Sets the value of a body's state.

Note: The state change doesn't take effect immediately. The state will change on the next physics frame.


void body_set_state_sync_callback(body: RID, callable: Callable) 🔗

Sets the body's state synchronization callback function to callable. Use an empty Callable (Callable()) to clear the callback.

The function callable will be called every physics frame, assuming that the body was active during the previous physics tick, and can be used to fetch the latest state from the physics server.

The function callable must take the following parameters:

  1. state: a PhysicsDirectBodyState2D, used to retrieve the body's state.


bool body_test_motion(body: RID, parameters: PhysicsTestMotionParameters2D, result: PhysicsTestMotionResult2D = null) 🔗

Returns true if a collision would result from moving the body along a motion vector from a given point in space. See PhysicsTestMotionParameters2D for the available motion parameters. Optionally a PhysicsTestMotionResult2D object can be passed, which will be used to store the information about the resulting collision.


RID capsule_shape_create() 🔗

Crea una forma de cápsula 2D en el servidor de física, y devuelve el RID que la identifica. Utiliza shape_set_data() para establecer la altura y el radio de la cápsula.


RID circle_shape_create() 🔗

Crea una forma de círculo 2D en el servidor de física, y devuelve el RID que la identifica. Utiliza shape_set_data() para establecer el radio del círculo.


RID concave_polygon_shape_create() 🔗

Crea una forma de polígono cóncavo 2D en el servidor de física, y devuelve el RID que la identifica. Utiliza shape_set_data() para establecer los segmentos del polígono cóncavo.


RID convex_polygon_shape_create() 🔗

Crea una forma de polígono convexo 2D en el servidor de física, y devuelve el RID que la identifica. Utiliza shape_set_data() para establecer los puntos del polígono convexo.


float damped_spring_joint_get_param(joint: RID, param: DampedSpringParam) const 🔗

Devuelve el valor del parámetro del resorte amortiguado dado.


void damped_spring_joint_set_param(joint: RID, param: DampedSpringParam, value: float) 🔗

Establece el valor del parámetro del resorte amortiguado dado.


void free_rid(rid: RID) 🔗

Destruye cualquiera de los objetos creados por PhysicsServer2D. Si el RID pasado no es uno de los objetos que puede ser creado por PhysicsServer2D, se imprimirá un error en la consola.


int get_process_info(process_info: ProcessInfo) 🔗

Devuelve el valor de un estado del motor de física especificado por process_info.


void joint_clear(joint: RID) 🔗

Destroys the joint with the given RID, creates a new uninitialized joint, and makes the RID refer to this new joint.


RID joint_create() 🔗

Creates a 2D joint in the physics server, and returns the RID that identifies it. To set the joint type, use joint_make_damped_spring(), joint_make_groove() or joint_make_pin(). Use joint_set_param() to set generic joint parameters.


void joint_disable_collisions_between_bodies(joint: RID, disable: bool) 🔗

Sets whether the bodies attached to the Joint2D will collide with each other.


float joint_get_param(joint: RID, param: JointParam) const 🔗

Returns the value of the given joint parameter.


JointType joint_get_type(joint: RID) const 🔗

Returns the joint's type.


bool joint_is_disabled_collisions_between_bodies(joint: RID) const 🔗

Returns whether the bodies attached to the Joint2D will collide with each other.


void joint_make_damped_spring(joint: RID, anchor_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID = RID()) 🔗

Makes the joint a damped spring joint, attached at the point anchor_a (given in global coordinates) on the body body_a and at the point anchor_b (given in global coordinates) on the body body_b. To set the parameters which are specific to the damped spring, see damped_spring_joint_set_param().


void joint_make_groove(joint: RID, groove1_a: Vector2, groove2_a: Vector2, anchor_b: Vector2, body_a: RID = RID(), body_b: RID = RID()) 🔗

Makes the joint a groove joint.


void joint_make_pin(joint: RID, anchor: Vector2, body_a: RID, body_b: RID = RID()) 🔗

Makes the joint a pin joint. If body_b is an empty RID, then body_a is pinned to the point anchor (given in global coordinates); otherwise, body_a is pinned to body_b at the point anchor (given in global coordinates). To set the parameters which are specific to the pin joint, see pin_joint_set_param().


void joint_set_param(joint: RID, param: JointParam, value: float) 🔗

Sets the value of the given joint parameter.


bool pin_joint_get_flag(joint: RID, flag: PinJointFlag) const 🔗

Gets a pin joint flag.


float pin_joint_get_param(joint: RID, param: PinJointParam) const 🔗

Returns the value of a pin joint parameter.


void pin_joint_set_flag(joint: RID, flag: PinJointFlag, enabled: bool) 🔗

Sets a pin joint flag.


void pin_joint_set_param(joint: RID, param: PinJointParam, value: float) 🔗

Sets a pin joint parameter.


RID rectangle_shape_create() 🔗

Crea una forma de rectángulo 2D en el servidor de física, y devuelve el RID que la identifica. Utiliza shape_set_data() para establecer las semiextensiones del rectángulo.


RID segment_shape_create() 🔗

Crea una forma de segmento 2D en el servidor de física, y devuelve el RID que la identifica. Utiliza shape_set_data() para establecer los puntos de inicio y fin del segmento.


RID separation_ray_shape_create() 🔗

Crea una forma de rayo de separación 2D en el servidor de física, y devuelve el RID que la identifica. Utiliza shape_set_data() para establecer las propiedades length y slide_on_slope de la forma.


void set_active(active: bool) 🔗

Activa o desactiva el servidor de física 2D. Si active es false, entonces el servidor de física no hará nada en su paso de física.


Variant shape_get_data(shape: RID) const 🔗

Devuelve los datos de la forma que definen la configuración de la forma, como las extensiones medias de un rectángulo o los segmentos de una forma cóncava. Véase shape_set_data() para conocer el formato preciso de estos datos en cada caso.


ShapeType shape_get_type(shape: RID) const 🔗

Devuelve el tipo de la forma.


void shape_set_data(shape: RID, data: Variant) 🔗

Sets the shape data that defines the configuration of the shape. The data to be passed depends on the shape's type (see shape_get_type()):

Warning: In the case of SHAPE_CONVEX_POLYGON, this method does not check if the points supplied actually form a convex polygon (unlike the CollisionPolygon2D.polygon property).


RID space_create() 🔗

Creates a 2D space in the physics server, and returns the RID that identifies it. A space contains bodies and areas, and controls the stepping of the physics simulation of the objects in it.


PhysicsDirectSpaceState2D space_get_direct_state(space: RID) 🔗

Returns the state of a space, a PhysicsDirectSpaceState2D. This object can be used for collision/intersection queries.


float space_get_param(space: RID, param: SpaceParameter) const 🔗

Devuelve el valor del parámetro de espacio dado.


bool space_is_active(space: RID) const 🔗

Returns true if the space is active.


void space_set_active(space: RID, active: bool) 🔗

Activates or deactivates the space. If active is false, then the physics server will not do anything with this space in its physics step.


void space_set_param(space: RID, param: SpaceParameter, value: float) 🔗

Sets the value of the given space parameter.


RID world_boundary_shape_create() 🔗

Creates a 2D world boundary shape in the physics server, and returns the RID that identifies it. Use shape_set_data() to set the shape's normal direction and distance properties.