Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

PhysicalBone3D

Hereda: PhysicsBody3D < CollisionObject3D < Node3D < Node < Object

Un cuerpo físico utilizado para hacer que los huesos de un Skeleton3D reaccionen a la física.

Descripción

El nodo PhysicalBone3D es un cuerpo físico que se puede utilizar para hacer que los huesos de un Skeleton3D reaccionen a la física.

Nota: Para detectar huesos físicos con raycasts, la propiedad SkeletonModifier3D.active del padre PhysicalBoneSimulator3D debe ser true y el hueso del Skeleton3D debe ser asignado al PhysicalBone3D correctamente; esto significa que get_bone_id() debe devolver un ID válido (>= 0).

Tutoriales

Propiedades

float

angular_damp

0.0

DampMode

angular_damp_mode

0

Vector3

angular_velocity

Vector3(0, 0, 0)

Transform3D

body_offset

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

float

bounce

0.0

bool

can_sleep

true

bool

custom_integrator

false

float

friction

1.0

float

gravity_scale

1.0

Transform3D

joint_offset

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

Vector3

joint_rotation

Vector3(0, 0, 0)

JointType

joint_type

0

float

linear_damp

0.0

DampMode

linear_damp_mode

0

Vector3

linear_velocity

Vector3(0, 0, 0)

float

mass

1.0

Métodos

void

_integrate_forces(state: PhysicsDirectBodyState3D) virtual

void

apply_central_impulse(impulse: Vector3)

void

apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0))

int

get_bone_id() const

bool

get_simulate_physics()

bool

is_simulating_physics()


Enumeraciones

enum DampMode: 🔗

DampMode DAMP_MODE_COMBINE = 0

En este modo, el valor de amortiguación del cuerpo se añade a cualquier valor establecido en las áreas o al valor predeterminado.

DampMode DAMP_MODE_REPLACE = 1

En este modo, el valor de amortiguación del cuerpo reemplaza cualquier valor establecido en las áreas o al valor predeterminado.


enum JointType: 🔗

JointType JOINT_TYPE_NONE = 0

No se aplica ninguna articulación al PhysicsBone3D.

JointType JOINT_TYPE_PIN = 1

Se aplica una articulación de pasador al PhysicsBone3D.

JointType JOINT_TYPE_CONE = 2

Se aplica una articulación cónica al PhysicsBone3D.

JointType JOINT_TYPE_HINGE = 3

Se aplica una articulación de bisagra al PhysicsBone3D.

JointType JOINT_TYPE_SLIDER = 4

Se aplica una articulación deslizante al PhysicsBone3D.

JointType JOINT_TYPE_6DOF = 5

Se aplica una articulación de 6 grados de libertad al PhysicsBone3D.


Descripciones de Propiedades

float angular_damp = 0.0 🔗

  • void set_angular_damp(value: float)

  • float get_angular_damp()

Amortigua la rotación del cuerpo. Por defecto, el cuerpo utilizará el ajuste del proyecto ProjectSettings.physics/3d/default_angular_damp o cualquier valor de anulación establecido por un Area3D en el que se encuentre el cuerpo. Dependiendo de angular_damp_mode, puedes configurar angular_damp para que se añada o reemplace el valor de amortiguación del cuerpo.

Véase ProjectSettings.physics/3d/default_angular_damp para más detalles sobre la amortiguación.


DampMode angular_damp_mode = 0 🔗

Define cómo se aplica angular_damp.


Vector3 angular_velocity = Vector3(0, 0, 0) 🔗

  • void set_angular_velocity(value: Vector3)

  • Vector3 get_angular_velocity()

La velocidad de rotación del PhysicsBone3D en radianes por segundo.


Transform3D body_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗

Establece la transformación del cuerpo.


float bounce = 0.0 🔗

  • void set_bounce(value: float)

  • float get_bounce()

La elasticidad del cuerpo. Los valores van desde 0 (sin rebote) hasta 1 (rebote completo).

Nota: Incluso con bounce establecido en 1.0, se perderá algo de energía con el tiempo debido a la amortiguación lineal y angular. Para tener un PhysicalBone3D que conserve toda su energía con el tiempo, establece bounce en 1.0, linear_damp_mode en DAMP_MODE_REPLACE, linear_damp en 0.0, angular_damp_mode en DAMP_MODE_REPLACE, y angular_damp en 0.0.


bool can_sleep = true 🔗

  • void set_can_sleep(value: bool)

  • bool is_able_to_sleep()

Si es true, el cuerpo se desactiva cuando no hay movimiento, por lo que no participará en la simulación hasta que sea despertado por una fuerza externa.


bool custom_integrator = false 🔗

  • void set_use_custom_integrator(value: bool)

  • bool is_using_custom_integrator()

Si es true, la integración estándar de fuerzas (como la gravedad o la amortiguación) se deshabilitará para este cuerpo. Aparte de la respuesta a la colisión, el cuerpo solo se moverá según lo determinado por el método _integrate_forces(), si ese método virtual es sobrescrito.

Establecer esta propiedad llamará internamente al método PhysicsServer3D.body_set_omit_force_integration().


float friction = 1.0 🔗

  • void set_friction(value: float)

  • float get_friction()

La fricción del cuerpo. Los valores van desde 0 (sin fricción) hasta 1 (fricción máxima).


float gravity_scale = 1.0 🔗

  • void set_gravity_scale(value: float)

  • float get_gravity_scale()

Esto se multiplica por ProjectSettings.physics/3d/default_gravity para producir la gravedad de este cuerpo. Por ejemplo, un valor de 1.0 aplicará la gravedad normal, 2.0 aplicará el doble de gravedad y 0.5 aplicará la mitad de gravedad a este cuerpo.


Transform3D joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗

Establece la transformación de la articulación.


Vector3 joint_rotation = Vector3(0, 0, 0) 🔗

  • void set_joint_rotation(value: Vector3)

  • Vector3 get_joint_rotation()

Establece la rotación de la articulación en radianes.


JointType joint_type = 0 🔗

Establece el tipo de articulación.


float linear_damp = 0.0 🔗

  • void set_linear_damp(value: float)

  • float get_linear_damp()

Amortigua el movimiento del cuerpo. Por defecto, el cuerpo usará ProjectSettings.physics/3d/default_linear_damp o cualquier valor de anulación establecido por un Area3D en el que se encuentre el cuerpo. Dependiendo de linear_damp_mode, linear_damp puede añadirse o reemplazar el valor de amortiguación del cuerpo.

Véase ProjectSettings.physics/3d/default_linear_damp para más detalles sobre la amortiguación.


DampMode linear_damp_mode = 0 🔗

Define cómo se aplica linear_damp.


Vector3 linear_velocity = Vector3(0, 0, 0) 🔗

  • void set_linear_velocity(value: Vector3)

  • Vector3 get_linear_velocity()

The body's linear velocity in units per second. Can be used sporadically, but don't set this every frame, because physics may run in another thread and runs at a different granularity. Use _integrate_forces() as your process loop for precise control of the body state.


float mass = 1.0 🔗

La masa del cuerpo.


Descripciones de Métodos

void _integrate_forces(state: PhysicsDirectBodyState3D) virtual 🔗

Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the custom_integrator property allows you to disable the standard force integration and do fully custom force integration for a body.


void apply_central_impulse(impulse: Vector3) 🔗

Aplica un impulso direccional sin afectar la rotación.

¡Un impulso es independiente del tiempo! Aplicar un impulso en cada cuadro resultaría en una fuerza dependiente de la tasa de fotogramas. Por esta razón, solo debe usarse al simular impactos únicos (usa las funciones "_integrate_forces" en su lugar).

Esto es equivalente a usar apply_impulse() en el centro de masa del cuerpo.


void apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗

Aplica un impulso posicionado al PhysicsBone3D.

¡Un impulso es independiente del tiempo! Aplicar un impulso en cada cuadro resultaría en una fuerza dependiente de los fotogramas. Por esta razón, sólo debe utilizarse cuando se simulan impactos únicos (de lo contrario, utiliza las funciones "_integrate_forces").

position es el desplazamiento desde el origen del PhysicsBone3D en coordenadas globales.


int get_bone_id() const 🔗

Devuelve el identificador único del PhysicsBone3D.


bool get_simulate_physics() 🔗

Devuelve true si el PhysicsBone3D tiene permitido simular física.


bool is_simulating_physics() 🔗

Devuelve true si el PhysicsBone3D está simulando física actualmente.