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...
SoftBody3D
Eredita: MeshInstance3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Una mesh di fisica 3D deformabile.
Descrizione
Una mesh di fisica 3D deformabile. Utilizzata per creare oggetti elastici o deformabili come stoffa, gomma o altri materiali flessibili.
Inoltre, SoftBody3D è soggetto alle forze del vento definite in Area3D (vedi Area3D.wind_source_path, Area3D.wind_force_magnitude e Area3D.wind_attenuation_factor).
Nota: Si consiglia di utilizzare Jolt Physics quando si utilizza SoftBody3D invece del GodotPhysics3D predefinito, poiché l'implementazione dei corpi deformabili di Jolt Physics è più veloce e affidabile. È possibile cambiare il motore fisico attraverso l'impostazione del progetto ProjectSettings.physics/3d/physics_engine.
Tutorial
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
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) |
Enumerazioni
enum DisableMode: 🔗
DisableMode DISABLE_MODE_REMOVE = 0
Quando Node.process_mode è impostato su Node.PROCESS_MODE_DISABLED, rimuovi dalla simulazione di fisica per fermare tutte le interazioni fisiche con questo SoftBody3D.
Riaggiunge il corpo automaticamente alla simulazione di fisica quando il Node viene nuovamente elaborato.
DisableMode DISABLE_MODE_KEEP_ACTIVE = 1
Quando Node.process_mode è impostato su Node.PROCESS_MODE_DISABLED, non influire sulla simulazione di fisica.
Descrizioni delle proprietà
Gli strati di fisica in cui questo SoftBody3D si trova. Gli oggetti di collisione possono esistere in uno o più dei 32 strati diversi. Vedi anche collision_mask.
Nota: L'oggetto A può rilevare un contatto con l'oggetto B solo se l'oggetto B si trova in uno qualsiasi dei strati che l'oggetto A scansiona. Vedi Strati e maschere di collisione nella documentazione per ulteriori informazioni.
Gli strati di fisica che questo SoftBody3D scansiona. Gli oggetti di collisione possono esistere in uno o più dei 32 strati diversi. Vedi anche collision_mask.
Nota: L'oggetto A può rilevare un contatto con l'oggetto B solo se l'oggetto B si trova in uno qualsiasi dei strati che l'oggetto A scansiona. Vedi Strati e maschere di collisione nella documentazione per ulteriori informazioni.
float damping_coefficient = 0.01 🔗
Il coefficiente di smorzamento del corpo. Valori più alti rallenteranno il corpo in modo più evidente quando vengono applicate forze.
DisableMode disable_mode = 0 🔗
void set_disable_mode(value: DisableMode)
DisableMode get_disable_mode()
Definisce il comportamento nella fisica quando Node.process_mode è impostato su Node.PROCESS_MODE_DISABLED.
float drag_coefficient = 0.0 🔗
Il coefficiente di resistenza aerodinamica del corpo. Valori più alti aumentano la resistenza all'aria di questo corpo.
Nota: Questo valore è attualmente inutilizzato dall'implementazione fisica predefinita di Godot.
float linear_stiffness = 0.5 🔗
Valori più alti risulteranno in un corpo più rigido, mentre valori più bassi aumenteranno la capacità del corpo di piegarsi. Il valore può essere compreso tra 0.0 e 1.0 (inclusi).
NodePath parent_collision_ignore = NodePath("") 🔗
Il NodePath verso un CollisionObject3D che questo SoftBody3D dovrebbe evitare di passare attraverso.
float pressure_coefficient = 0.0 🔗
Il coefficiente di pressione di questo corpo deformabile. Simula l'accumulo di pressione dall'interno di questo corpo. Valori più alti aumentano la forza di questo effetto.
Se true, il SoftBody3D risponderà ai nodi RayCast3D.
float shrinking_factor = 0.0 🔗
Scales the rest lengths of SoftBody3D's edge constraints. Positive values shrink the mesh, while negative values expand it. For example, a value of 0.1 shortens the edges of the mesh by 10%, while -0.1 expands the edges by 10%.
Note: shrinking_factor is best used on surface meshes with pinned points.
int simulation_precision = 5 🔗
Aumentare questo valore migliorerà la simulazione risultante, ma può influire sulle prestazioni. Usare con cautela.
The SoftBody3D's mass.
Descrizioni dei metodi
void add_collision_exception_with(body: Node) 🔗
Aggiunge un corpo alla lista dei corpi con cui questo corpo non può entrare in collisione.
void apply_central_force(force: Vector3) 🔗
Distribuisce e applica una forza a tutti i punti. Una forza è dipendente dal tempo e pensata per essere applicata a ogni aggiornamento della fisica.
void apply_central_impulse(impulse: Vector3) 🔗
Distribuisce e applica un impulso a tutti i punti.
Un impulso è indipendente dal tempo! Applicare un impulso a ogni frame risulterebbe in a una forza dipendente dal frame rate. Per questo motivo, dovrebbe essere utilizzato solo quando si simulano impatti singoli (altrimenti, utilizza le funzioni "_force").
void apply_force(point_index: int, force: Vector3) 🔗
Applica una forza a un punto. Una forza è dipendente dal tempo e pensata per essere applicata a ogni aggiornamento della fisica.
void apply_impulse(point_index: int, impulse: Vector3) 🔗
Applica un impulso a un punto.
Un impulso è indipendente dal tempo! Applicare un impulso a ogni frame risulterebbe in a una forza dipendente dal frame rate. Per questo motivo, dovrebbe essere utilizzato solo quando si simulano impatti singoli (altrimenti, utilizza le funzioni "_force").
Array[PhysicsBody3D] get_collision_exceptions() 🔗
Restituisce un array di nodi aggiunti come eccezioni di collisione per questo corpo.
bool get_collision_layer_value(layer_number: int) const 🔗
Restituisce se lo strato specificato di collision_layer è abilitato o meno, fornito un numero di strato layer_number tra 1 e 32.
bool get_collision_mask_value(layer_number: int) const 🔗
Restituisce se lo strato specificato della collision_mask è abilitato, fornito un numero di strato layer_number tra 1 e 32.
Restituisce il RID interno utilizzato dal PhysicsServer3D per questo corpo.
Vector3 get_point_transform(point_index: int) 🔗
Restituisce la traslazione locale di un vertice nell'array di superfici.
bool is_point_pinned(point_index: int) const 🔗
Restituisce true se il vertice è impostato come fisso.
void remove_collision_exception_with(body: Node) 🔗
Rimuove un corpo dalla lista dei corpi con cui questo corpo non può entrare in collisione.
void set_collision_layer_value(layer_number: int, value: bool) 🔗
In base a value, abilita o disabilita lo strato specificato nel collision_layer, fornito un layer_number compreso tra 1 e 32.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
In base a value, abilita o disabilita lo strato specificato nel collision_mask, fornito un layer_number compreso tra 1 e 32.
void set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) 🔗
Imposta lo stato fissato di un vertice di superficie. Se impostato su true, il parametro facoltativo attachment_path può definire un Node3D a cui sarà attaccato il vertice fissato.