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...
PhysicsBody3D
Eredita: CollisionObject3D < Node3D < Node < Object
Ereditato da: CharacterBody3D, PhysicalBone3D, RigidBody3D, StaticBody3D
Classe di base astratta per gli oggetti di gioco 3D influenzati dalla fisica.
Descrizione
PhysicsBody3D è una classe di base astratta per gli oggetti di gioco 3D influenzati dalla fisica. Tutti i corpi fisici 3D ereditano da essa.
Attenzione: Con una scala non uniforme, questo nodo probabilmente non si comporterà come previsto. Si consiglia di mantenere la sua scala uguale su tutti gli assi e di regolare invece le sue forme di collisione.
Tutorial
Proprietà
|
||
|
||
|
||
|
||
|
||
|
Metodi
void |
add_collision_exception_with(body: Node) |
get_axis_lock(axis: BodyAxis) const |
|
get_gravity() const |
|
move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) |
|
void |
|
void |
set_axis_lock(axis: BodyAxis, lock: bool) |
test_move(from: Transform3D, motion: Vector3, collision: KinematicCollision3D = null, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) |
Descrizioni delle proprietà
bool axis_lock_angular_x = false 🔗
Blocca la rotazione del corpo lungo l'asse X.
bool axis_lock_angular_y = false 🔗
Blocca la rotazione del corpo lungo l'asse Y.
bool axis_lock_angular_z = false 🔗
Blocca la rotazione del corpo lungo l'asse Z.
bool axis_lock_linear_x = false 🔗
Blocca il movimento lineare del corpo lungo l'asse X.
bool axis_lock_linear_y = false 🔗
Blocca il movimento lineare del corpo lungo l'asse Y.
bool axis_lock_linear_z = false 🔗
Blocca il movimento lineare del corpo lungo l'asse Z.
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.
bool get_axis_lock(axis: BodyAxis) const 🔗
Restituisce true se l'asse lineare o rotazionale axis è bloccata.
Array[PhysicsBody3D] get_collision_exceptions() 🔗
Restituisce un array di nodi aggiunti come eccezioni di collisione per questo corpo.
Restituisce il vettore di gravità calcolato da tutte le fonti che possono influenzare il corpo, inclusi tutte le sostituzioni di gravità dai nodi Area3D e la gravità del mondo globale.
KinematicCollision3D move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) 🔗
Sposta il corpo lungo il vettore motion. Per essere indipendente dal frame rate in Node._physics_process() o Node._process(), motion deve essere calcolato usando delta.
Restituisce un KinematicCollision3D, che contiene informazioni sulla collisione quando si ferma o quando si scontra con un altro corpo lungo il movimento.
Se test_only è true, il corpo non si muove ma sono restituite le informazioni sulla potenziale collisione.
safe_margin è il margine aggiuntivo usato per il recupero della collisione (vedi CharacterBody3D.safe_margin per maggiori dettagli).
Se recovery_as_collision è true, qualsiasi penetrazione dalla fase di recupero è segnalata come collisione; questo è utilizzato ad esempio da CharacterBody3D per rilevare meglio il pavimento durante l'aggancio sul pavimento.
max_collisions consente di recuperare più di un risultato di collisione.
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_axis_lock(axis: BodyAxis, lock: bool) 🔗
Blocca o sblocca l'asse lineare o rotazionale specificato da axis a seconda del valore di lock.
bool test_move(from: Transform3D, motion: Vector3, collision: KinematicCollision3D = null, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) 🔗
Controlla le collisioni senza muovere il corpo. Per essere indipendente dal frame rate in Node._physics_process() o Node._process(), motion deve essere calcolato usando delta.
Imposta virtualmente la posizione, la scala e la rotazione del nodo su quelle del Transform3D fornito, quindi prova a muovere il corpo lungo il vettore motion. Restituisce true se una collisione impedirebbe al corpo di muoversi lungo l'intero percorso.
collision è un oggetto facoltativo di tipo KinematicCollision3D, che contiene ulteriori informazioni sulla collisione quando si ferma o quando si scontra con un altro corpo lungo il movimento.
safe_margin è il margine aggiuntivo usato per il recupero della collisione (vedi CharacterBody3D.safe_margin per maggiori dettagli).
Se recovery_as_collision è true, anche qualsiasi penetrazione dalla fase di recupero è segnalata come collisione; ciò è utile per verificare se il corpo si scontrerebbe con altri corpi.
max_collisions consente di recuperare più di un risultato di collisione.