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.
Checking the stable version of the documentation...
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
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
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)) |
get_bone_id() const |
|
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
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) 🔗
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) 🔗
void set_body_offset(value: Transform3D)
Transform3D get_body_offset()
Establece la transformación del cuerpo.
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.
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 🔗
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().
La fricción del cuerpo. Los valores van desde 0 (sin fricción) hasta 1 (fricción máxima).
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) 🔗
void set_joint_offset(value: Transform3D)
Transform3D get_joint_offset()
Establece la transformación de la articulación.
Vector3 joint_rotation = Vector3(0, 0, 0) 🔗
Establece la rotación de la articulación en radianes.
Establece el tipo de articulación.
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) 🔗
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.
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.
Devuelve el identificador único del PhysicsBone3D.
Devuelve true si el PhysicsBone3D tiene permitido simular física.
bool is_simulating_physics() 🔗
Devuelve true si el PhysicsBone3D está simulando física actualmente.