PhysicalBone3D
Eredita: PhysicsBody3D < CollisionObject3D < Node3D < Node < Object
Un corpo fisico utilizzato per far reagire le ossa in uno Skeleton3D alla fisica.
Descrizione
Il nodo PhysicalBone3D è un corpo fisico che può essere utilizzato per far reagire le ossa in uno Skeleton3D alla fisica.
Nota: Per rilevare le ossa fisiche con i raycast, la proprietà SkeletonModifier3D.active del PhysicalBoneSimulator3D genitore deve essere true e l'osso dello Skeleton3D deve essere assegnato correttamente a PhysicalBone3D; ciò significa che get_bone_id() dovrebbe restituire un ID valido (>= 0).
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
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 |
|
Enumerazioni
enum DampMode: 🔗
DampMode DAMP_MODE_COMBINE = 0
In questa modalità, il valore di smorzamento del corpo è aggiunto a qualsiasi valore impostato nelle aree o al valore predefinito.
DampMode DAMP_MODE_REPLACE = 1
In questa modalità, il valore di smorzamento del corpo sostituisce qualsiasi valore impostato nelle aree o il valore predefinito.
enum JointType: 🔗
JointType JOINT_TYPE_NONE = 0
Nessuna articolazione è applicata al PhysicsBone3D.
JointType JOINT_TYPE_PIN = 1
Un giunto a perno viene applicato al PhysicsBone3D.
JointType JOINT_TYPE_CONE = 2
Un'articolazione conica è applicata al PhysicsBone3D.
JointType JOINT_TYPE_HINGE = 3
Un giunto a cerniera viene applicato al PhysicsBone3D.
JointType JOINT_TYPE_SLIDER = 4
Un'articolazione scorrevole è applicata al PhysicsBone3D.
JointType JOINT_TYPE_6DOF = 5
Un giunto a 6 gradi di libertà viene applicato al PhysicsBone3D.
Descrizioni delle proprietà
Smorza la rotazione del corpo. Come predefinito, il corpo utilizzerà impostazione del progetto ProjectSettings.physics/3d/default_angular_damp, o un valore sostitutivo impostato da un'Area3D in cui si trova il corpo. A seconda di angular_damp_mode, è possibile impostare angular_damp in modo che sia aggiunto o sostituito al valore di smorzamento del corpo.
Vedi ProjectSettings.physics/3d/default_angular_damp per ulteriori dettagli sullo smorzamento.
DampMode angular_damp_mode = 0 🔗
Definisce come angular_damp è applicato.
Vector3 angular_velocity = Vector3(0, 0, 0) 🔗
Velocità di rotazione del PhysicalBone3D in radianti al secondo.
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()
Imposta la trasformazione del corpo.
Il rimbalzo del corpo. I valori variano da 0 (nessun rimbalzo) a 1 (rimbalzo totale).
Nota: Anche con bounce impostato su 1.0, parte dell'energia sarà persa nel tempo a causa dello smorzamento lineare e angolare. Per avere un PhysicalBone3D che conservi tutta la sua energia nel tempo, imposta bounce su 1.0, linear_damp_mode su DAMP_MODE_REPLACE, linear_damp su 0.0, angular_damp_mode su DAMP_MODE_REPLACE e angular_damp su 0.0.
Se true, il corpo viene disattivato quando non c'è movimento, quindi non parteciperà alla simulazione finché non sarà risvegliato da una forza esterna.
bool custom_integrator = false 🔗
Se true, l'integrazione predefinita delle forze (come gravità o smorzamento) sarà disabilitata per questo corpo. A parte la risposta alla collisione, il corpo si muoverà solo come determinato dal metodo _integrate_forces(), se tale metodo virtuale è sovrascritto.
Impostando questa proprietà sarà chiamato internamente il metodo PhysicsServer3D.body_set_omit_force_integration().
L'attrito del corpo, da 0 (senza attrito) a 1 (massimo attrito).
Questo è moltiplicato per ProjectSettings.physics/3d/default_gravity per produrre la gravità di questo corpo. Ad esempio, un valore di 1.0 applicherà la gravità normale, 2.0 applicherà il doppio della gravità e 0.5 applicherà metà della gravità per questo corpo.
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()
Imposta la trasformazione dell'articolazione.
Vector3 joint_rotation = Vector3(0, 0, 0) 🔗
Imposta la rotazione dell'articolazione in radianti.
Imposta il tipo di giunto.
Smorza il movimento del corpo. Come predefinito, il corpo utilizzerà ProjectSettings.physics/3d/default_linear_damp, o un valore sostitutivo impostato da un'Area3D in cui si trova il corpo. A seconda di linear_damp_mode, è possibile impostare linear_damp in modo che sia aggiunto o sostituito al valore di smorzamento del corpo.
Vedi ProjectSettings.physics/3d/default_linear_damp per ulteriori dettagli sullo smorzamento.
DampMode linear_damp_mode = 0 🔗
Definisce come linear_damp è applicato.
Vector3 linear_velocity = Vector3(0, 0, 0) 🔗
La velocità lineare del corpo in unità al secondo. Può essere usata sporadicamente, ma non impostarla ogni frame, perché la fisica potrebbe essere eseguita in un altro thread e funzionare a una granularità diversa. Usa _integrate_forces() come ciclo di processo per un controllo preciso dello stato del corpo.
La massa del corpo.
Descrizioni dei metodi
void _integrate_forces(state: PhysicsDirectBodyState3D) virtual 🔗
Chiamato durante l'elaborazione di fisica, consente di leggere e modificare in modo sicuro lo stato di simulazione per l'oggetto. Per impostazione predefinita, viene chiamato prima dell'integrazione predefinita delle forze, ma la proprietà custom_integrator consente di disabilitare l'integrazione delle forze predefinita e di eseguire un'integrazione delle forze completamente personalizzata per un corpo.
void apply_central_impulse(impulse: Vector3) 🔗
Applica un impulso direzionale senza influenzare la rotazione.
Un impulso è indipendente dal tempo! Applicare un impulso a ogni frame risulterebbe in una forza dipendente dal frame rate. Per questo motivo, dovrebbe essere utilizzato solo quando si simulano impatti singoli (altrimenti, utilizza le funzioni "_integrate_forces").
Ciò equivale a usare apply_impulse() al centro di massa del corpo.
void apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗
Applica un impulso posizionato al corpo.
Un impulso è indipendente dal tempo! Applicare un impulso a ogni frame risulterebbe in una forza dipendente dal frame rate. Per questo motivo, dovrebbe essere utilizzato solo quando si simulano impatti singoli (altrimenti, utilizza le funzioni "_integrate_forces").
position è lo scostamento dall'origine del PhysicsBone3D in coordinate globali.
Restituisce l'identificatore unico del PhysicsBone3D.
Restituisce true se al PhysicsBone3D è consentito simulare la fisica.
bool is_simulating_physics() 🔗
Restituisce true se il PhysicsBone3D sta attualmente simulando la fisica.