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.

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à

bool

axis_lock_angular_x

false

bool

axis_lock_angular_y

false

bool

axis_lock_angular_z

false

bool

axis_lock_linear_x

false

bool

axis_lock_linear_y

false

bool

axis_lock_linear_z

false

Metodi

void

add_collision_exception_with(body: Node)

bool

get_axis_lock(axis: BodyAxis) const

Array[PhysicsBody3D]

get_collision_exceptions()

Vector3

get_gravity() const

KinematicCollision3D

move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1)

void

remove_collision_exception_with(body: Node)

void

set_axis_lock(axis: BodyAxis, lock: bool)

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.


Vector3 get_gravity() const 🔗

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.