PhysicsDirectBodyState2D
Hereda: Object
Heredado por: PhysicsDirectBodyState2DExtension
Proporciona acceso directo a un cuerpo de física en PhysicsServer2D.
Descripción
Provides direct access to a physics body in the PhysicsServer2D, allowing safe changes to physics properties. This object is passed via the direct state callback of RigidBody2D, and is intended for changing the direct state of that body. See RigidBody2D._integrate_forces().
Tutoriales
Propiedades
Métodos
Descripciones de Propiedades
La velocidad de rotación del cuerpo en radianes por segundo.
Vector2 get_center_of_mass()
La posición del centro de masa del cuerpo relativa al centro del cuerpo en el sistema de coordenadas global.
Vector2 center_of_mass_local 🔗
Vector2 get_center_of_mass_local()
Posición del centro de masa del cuerpo en el sistema de coordenadas local del cuerpo.
La capa de colisión del cuerpo.
La máscara de colisión del cuerpo.
float get_inverse_inertia()
El inverso de la inercia del cuerpo.
float get_inverse_mass()
El inverso de la masa del cuerpo.
La velocidad lineal del cuerpo en píxeles por segundo.
Si es true, este cuerpo está actualmente durmiendo (no está activo).
float get_step()
El paso temporal (delta) utilizado para la simulación.
float get_total_angular_damp()
La velocidad a la que el cuerpo deja de girar, si no hay otras fuerzas que lo muevan.
Vector2 get_total_gravity()
El vector de gravedad total que se aplica actualmente a este cuerpo.
float get_total_linear_damp()
La velocidad a la que el cuerpo deja de moverse, si no hay otras fuerzas que lo muevan.
Transform2D transform 🔗
void set_transform(value: Transform2D)
Transform2D get_transform()
La matriz de transformación del cuerpo.
Descripciones de Métodos
void add_constant_central_force(force: Vector2 = Vector2(0, 0)) 🔗
Añade una fuerza direccional constante sin afectar la rotación que se sigue aplicando con el tiempo hasta que se borra con constant_force = Vector2(0, 0).
Esto es equivalente a usar add_constant_force() en el centro de masa del cuerpo.
void add_constant_force(force: Vector2, position: Vector2 = Vector2(0, 0)) 🔗
Añade una fuerza constante posicionada al cuerpo que se sigue aplicando con el tiempo hasta que se borra con constant_force = Vector2(0, 0).
position es el desplazamiento desde el origen del cuerpo en coordenadas globales.
void add_constant_torque(torque: float) 🔗
Añade una fuerza rotacional constante sin afectar la posición que se sigue aplicando con el tiempo hasta que se borra con constant_torque = 0.
void apply_central_force(force: Vector2 = Vector2(0, 0)) 🔗
Aplica una fuerza direccional sin afectar la rotación. Una fuerza depende del tiempo y está pensada para ser aplicada en cada actualización de la física.
Esto es equivalente a usar apply_force() en el centro de masa del cuerpo.
void apply_central_impulse(impulse: Vector2) 🔗
Aplica un impulso direccional sin afectar la rotación.
¡Un impulso es independiente del tiempo! Aplicar un impulso en cada fotograma resultaría en una fuerza dependiente de la velocidad de fotogramas. Por esta razón, solo debe usarse al simular impactos únicos (usa las funciones "_force" en su lugar).
Esto es equivalente a usar apply_impulse() en el centro de masa del cuerpo.
void apply_force(force: Vector2, position: Vector2 = Vector2(0, 0)) 🔗
Aplica una fuerza posicionada al cuerpo. Una fuerza depende del tiempo y está pensada para ser aplicada en cada actualización de la física.
position es el desplazamiento desde el origen del cuerpo en coordenadas globales.
void apply_impulse(impulse: Vector2, position: Vector2 = Vector2(0, 0)) 🔗
Aplica un impulso posicionado al cuerpo.
¡Un impulso es independiente del tiempo! Aplicar un impulso en cada fotograma resultaría en una fuerza dependiente de la velocidad de fotogramas. Por esta razón, solo debe usarse al simular impactos únicos (usa las funciones "_force" en su lugar).
position es el desplazamiento desde el origen del cuerpo en coordenadas globales.
void apply_torque(torque: float) 🔗
Aplica una fuerza rotacional sin afectar la posición. Una fuerza depende del tiempo y está pensada para ser aplicada en cada actualización de la física.
Nota: inverse_inertia es requerido para que esto funcione. Para tener inverse_inertia, una CollisionShape2D activa debe ser hija del nodo, o puedes establecer manualmente inverse_inertia.
void apply_torque_impulse(impulse: float) 🔗
Aplica un impulso rotacional al cuerpo sin afectar la posición.
¡Un impulso es independiente del tiempo! Aplicar un impulso en cada fotograma resultaría en una fuerza dependiente de la velocidad de fotogramas. Por esta razón, solo debe usarse al simular impactos únicos (usa las funciones "_force" en su lugar).
Nota: inverse_inertia es requerido para que esto funcione. Para tener inverse_inertia, una CollisionShape2D activa debe ser hija del nodo, o puedes establecer manualmente inverse_inertia.
Vector2 get_constant_force() const 🔗
Devuelve las fuerzas posicionales constantes totales del cuerpo aplicadas durante cada actualización de la física.
Véase add_constant_force() y add_constant_central_force().
float get_constant_torque() const 🔗
Devuelve las fuerzas rotacionales constantes totales del cuerpo aplicadas durante cada actualización de la física.
Véase add_constant_torque().
RID get_contact_collider(contact_idx: int) const 🔗
Devuelve el RID del colisionador.
int get_contact_collider_id(contact_idx: int) const 🔗
Devuelve la identificación del objeto del colisionador.
Object get_contact_collider_object(contact_idx: int) const 🔗
Devuelve el objeto del colisionador. Esto depende de cómo fue creado (devolverá un nodo de la escena si tal fue usado para crearlo).
Vector2 get_contact_collider_position(contact_idx: int) const 🔗
Devuelve la posición del punto de contacto en el colisionador en el sistema de coordenadas global.
int get_contact_collider_shape(contact_idx: int) const 🔗
Devuelve el índice de forma del colisionador.
Vector2 get_contact_collider_velocity_at_position(contact_idx: int) const 🔗
Devuelve el vector de velocidad en el punto de contacto del colisionador.
int get_contact_count() const 🔗
Devuelve el número de contactos que este cuerpo tiene con otros cuerpos.
Nota: Por defecto, esto devuelve 0 a menos que los cuerpos estén configurados para monitorear los contactos. Véase RigidBody2D.contact_monitor.
Vector2 get_contact_impulse(contact_idx: int) const 🔗
Devuelve el impulso creado por el contacto.
Vector2 get_contact_local_normal(contact_idx: int) const 🔗
Devuelve la normalidad local en el punto de contacto.
Vector2 get_contact_local_position(contact_idx: int) const 🔗
Devuelve la posición del punto de contacto en el cuerpo en el sistema de coordenadas global.
int get_contact_local_shape(contact_idx: int) const 🔗
Devuelve el índice de forma local de la colisión.
Vector2 get_contact_local_velocity_at_position(contact_idx: int) const 🔗
Devuelve el vector de velocidad en el punto de contacto del cuerpo.
PhysicsDirectSpaceState2D get_space_state() 🔗
Devuelve el estado actual del espacio, útil para las consultas.
Vector2 get_velocity_at_local_position(local_position: Vector2) const 🔗
Devuelve la velocidad del cuerpo en la posición relativa dada, incluyendo la traslación y la rotación.
void integrate_forces() 🔗
Updates the body's linear and angular velocity by applying gravity and damping for the equivalent of one physics tick.
void set_constant_force(force: Vector2) 🔗
Establece las fuerzas posicionales constantes totales del cuerpo aplicadas durante cada actualización de la física.
Véase add_constant_force() y add_constant_central_force().
void set_constant_torque(torque: float) 🔗
Establece las fuerzas rotacionales constantes totales del cuerpo aplicadas durante cada actualización de la física.
Véase add_constant_torque().