SoftBody3D
Hereda: MeshInstance3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Una malla física 3D deformable.
Descripción
A deformable 3D physics mesh. Used to create elastic or deformable objects such as cloth, rubber, or other flexible materials.
Additionally, SoftBody3D is subject to wind forces defined in Area3D (see Area3D.wind_source_path, Area3D.wind_force_magnitude, and Area3D.wind_attenuation_factor).
Note: It's recommended to use Jolt Physics when using SoftBody3D instead of the default GodotPhysics3D, as Jolt Physics' soft body implementation is faster and more reliable. You can switch the physics engine using the ProjectSettings.physics/3d/physics_engine project setting.
Tutoriales
Propiedades
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Métodos
void |
add_collision_exception_with(body: Node) |
void |
apply_central_force(force: Vector3) |
void |
apply_central_impulse(impulse: Vector3) |
void |
apply_force(point_index: int, force: Vector3) |
void |
apply_impulse(point_index: int, impulse: Vector3) |
get_collision_layer_value(layer_number: int) const |
|
get_collision_mask_value(layer_number: int) const |
|
get_physics_rid() const |
|
get_point_transform(point_index: int) |
|
is_point_pinned(point_index: int) const |
|
void |
|
void |
set_collision_layer_value(layer_number: int, value: bool) |
void |
set_collision_mask_value(layer_number: int, value: bool) |
void |
set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) |
Enumeraciones
enum DisableMode: 🔗
DisableMode DISABLE_MODE_REMOVE = 0
Cuando Node.process_mode está establecido en Node.PROCESS_MODE_DISABLED, se elimina de la simulación física para detener todas las interacciones físicas con este SoftBody3D.
Se vuelve a añadir automáticamente a la simulación física cuando el Node se procesa de nuevo.
DisableMode DISABLE_MODE_KEEP_ACTIVE = 1
Cuando Node.process_mode se establece en Node.PROCESS_MODE_DISABLED, no afecta a la simulación de físicas.
Descripciones de Propiedades
Las capas de física en las que se encuentra este SoftBody3D. Los objetos de colisión pueden existir en una o más de 32 capas diferentes. Ver también collision_mask.
Nota: El objeto A puede detectar un contacto con el objeto B solo si el objeto B está en alguna de las capas que el objeto A escanea. Véase Capas y máscaras de colisión en la documentación para más información.
Las capas de física que este SoftBody3D escanea. Los objetos de colisión pueden escanear una o más de 32 capas diferentes. Véase también collision_layer.
Nota: El objeto A puede detectar un contacto con el objeto B solo si el objeto B está en alguna de las capas que el objeto A escanea. Véase Capas y máscaras de colisión en la documentación para más información.
float damping_coefficient = 0.01 🔗
El coeficiente de amortiguación del cuerpo. Los valores más altos ralentizarán el cuerpo de forma más notoria cuando se apliquen fuerzas.
DisableMode disable_mode = 0 🔗
void set_disable_mode(value: DisableMode)
DisableMode get_disable_mode()
Define el comportamiento en la física cuando Node.process_mode se establece a Node.PROCESS_MODE_DISABLED.
float drag_coefficient = 0.0 🔗
El coeficiente de arrastre del cuerpo. Los valores más altos aumentan la resistencia al aire de este cuerpo.
Nota: Este valor no es utilizado actualmente por la implementación física predeterminada de Godot.
float linear_stiffness = 0.5 🔗
Los valores más altos resultarán en un cuerpo más rígido, mientras que los valores más bajos aumentarán la capacidad del cuerpo para doblarse. El valor puede estar entre 0.0 y 1.0 (inclusivo).
NodePath parent_collision_ignore = NodePath("") 🔗
NodePath a un CollisionObject3D que este SoftBody3D debería evitar atravesar.
float pressure_coefficient = 0.0 🔗
El coeficiente de presión de este cuerpo blando. Simula la acumulación de presión desde el interior de este cuerpo. Los valores más altos aumentan la fuerza de este efecto.
Si es true, el SoftBody3D responderá a los RayCast3Ds.
float shrinking_factor = 0.0 🔗
Escala las longitudes de reposo de las restricciones de borde del SoftBody3D. Los valores positivos encogen la malla, mientras que los valores negativos la expanden. Por ejemplo, un valor de 0.1 acorta los bordes de la malla en un 10%, mientras que -0.1 expande los bordes en un 10%.
Nota: shrinking_factor se usa mejor en mallas de superficie con puntos fijados.
int simulation_precision = 5 🔗
Aumentar este valor mejorará la simulación resultante, pero puede afectar al rendimiento. Usar con cuidado.
La masa del SoftBody3D.
Descripciones de Métodos
void add_collision_exception_with(body: Node) 🔗
Añade un cuerpo a la lista de cuerpos con los que este cuerpo no puede colisionar.
void apply_central_force(force: Vector3) 🔗
Distribuye y aplica una fuerza a todos los puntos. Una fuerza depende del tiempo y está pensada para aplicarse en cada actualización de la física.
void apply_central_impulse(impulse: Vector3) 🔗
Distribuye y aplica un impulso a todos los puntos.
¡Un impulso es independiente del tiempo! Aplicar un impulso cada frame resultaría en una fuerza dependiente del framerate. Por esta razón, solo debe usarse al simular impactos únicos (usa las funciones "_force" en caso contrario).
void apply_force(point_index: int, force: Vector3) 🔗
Aplica una fuerza a un punto. Una fuerza depende del tiempo y está pensada para aplicarse en cada actualización de la física.
void apply_impulse(point_index: int, impulse: Vector3) 🔗
Applies an impulse to a point.
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).
Array[PhysicsBody3D] get_collision_exceptions() 🔗
Devuelve un conjunto de nodos que se añadieron como excepciones de colisión para este cuerpo.
bool get_collision_layer_value(layer_number: int) const 🔗
Devuelve si la capa especificada de collision_layer está habilitada o no, dado un layer_number entre 1 y 32.
bool get_collision_mask_value(layer_number: int) const 🔗
Devuelve si la capa especificada de collision_mask está habilitada o no, dado un layer_number entre 1 y 32.
Devuelve el RID interno utilizado por el PhysicsServer3D para este cuerpo.
Vector3 get_point_transform(point_index: int) 🔗
Devuelve la traslación local de un vértice en el array de superficie.
bool is_point_pinned(point_index: int) const 🔗
Devuelve true si el vértice está fijado.
void remove_collision_exception_with(body: Node) 🔗
Quita un cuerpo de la lista de cuerpos con los que este cuerpo no puede colisionar.
void set_collision_layer_value(layer_number: int, value: bool) 🔗
Basado en value, habilita o deshabilita la capa especificada en collision_layer, dado un layer_number entre 1 y 32.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
Basado en value, habilita o deshabilita la capa especificada en collision_mask, dado un layer_number entre 1 y 32.
void set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) 🔗
Establece el estado fijado de un vértice de la superficie. Cuando se establece en true, el attachment_path opcional puede definir un Node3D al que se adjuntará el vértice fijado.