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.

PhysicsDirectBodyState3D

Eredita: Object

Ereditato da: PhysicsDirectBodyState3DExtension

Fornisce accesso diretto a un corpo fisico nel PhysicsServer3D.

Descrizione

Fornisce accesso diretto a un corpo fisico nel PhysicsServer3D, consentendo modifiche sicure alle proprietà di fisica. Questo oggetto è passato tramite il callback di stato diretto di RigidBody3D ed è pensato per modificare lo stato diretto di quel corpo. Vedi RigidBody3D._integrate_forces().

Tutorial

Proprietà

Vector3

angular_velocity

Vector3

center_of_mass

Vector3

center_of_mass_local

int

collision_layer

int

collision_mask

Vector3

inverse_inertia

Basis

inverse_inertia_tensor

float

inverse_mass

Vector3

linear_velocity

Basis

principal_inertia_axes

bool

sleeping

float

step

float

total_angular_damp

Vector3

total_gravity

float

total_linear_damp

Transform3D

transform

Metodi

void

add_constant_central_force(force: Vector3 = Vector3(0, 0, 0))

void

add_constant_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0))

void

add_constant_torque(torque: Vector3)

void

apply_central_force(force: Vector3 = Vector3(0, 0, 0))

void

apply_central_impulse(impulse: Vector3 = Vector3(0, 0, 0))

void

apply_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0))

void

apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0))

void

apply_torque(torque: Vector3)

void

apply_torque_impulse(impulse: Vector3)

Vector3

get_constant_force() const

Vector3

get_constant_torque() const

RID

get_contact_collider(contact_idx: int) const

int

get_contact_collider_id(contact_idx: int) const

Object

get_contact_collider_object(contact_idx: int) const

Vector3

get_contact_collider_position(contact_idx: int) const

int

get_contact_collider_shape(contact_idx: int) const

Vector3

get_contact_collider_velocity_at_position(contact_idx: int) const

int

get_contact_count() const

Vector3

get_contact_impulse(contact_idx: int) const

Vector3

get_contact_local_normal(contact_idx: int) const

Vector3

get_contact_local_position(contact_idx: int) const

int

get_contact_local_shape(contact_idx: int) const

Vector3

get_contact_local_velocity_at_position(contact_idx: int) const

PhysicsDirectSpaceState3D

get_space_state()

Vector3

get_velocity_at_local_position(local_position: Vector3) const

void

integrate_forces()

void

set_constant_force(force: Vector3)

void

set_constant_torque(torque: Vector3)


Descrizioni delle proprietà

Vector3 angular_velocity 🔗

  • void set_angular_velocity(value: Vector3)

  • Vector3 get_angular_velocity()

La velocità di rotazione del corpo in radianti al secondo.


Vector3 center_of_mass 🔗

La posizione del centro di massa del corpo rispetto al centro del corpo nel sistema di coordinate globale.


Vector3 center_of_mass_local 🔗

  • Vector3 get_center_of_mass_local()

Posizione del centro di massa del corpo nel sistema di coordinate locale del corpo.


int collision_layer 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

Lo strato di collisione del corpo.


int collision_mask 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

La maschera di collisione del corpo.


Vector3 inverse_inertia 🔗

L'inverso dell'inerzia del corpo.


Basis inverse_inertia_tensor 🔗

  • Basis get_inverse_inertia_tensor()

L'inverso del tensore d'inerzia del corpo.


float inverse_mass 🔗

  • float get_inverse_mass()

L'inverso della massa del corpo.


Vector3 linear_velocity 🔗

  • void set_linear_velocity(value: Vector3)

  • Vector3 get_linear_velocity()

La velocità lineare del corpo in unità al secondo.


Basis principal_inertia_axes 🔗

  • Basis get_principal_inertia_axes()

There is currently no description for this property. Please help us by contributing one!


bool sleeping 🔗

  • void set_sleep_state(value: bool)

  • bool is_sleeping()

Se true, questo corpo è attualmente in riposo (non attivo).


float step 🔗

Il passo temporale (delta) utilizzato per la simulazione.


float total_angular_damp 🔗

  • float get_total_angular_damp()

La frequenza alla quale il corpo smette di ruotare, se non ci sono altre forze che lo muovono.


Vector3 total_gravity 🔗

Il vettore di gravità totale attualmente applicato a questo corpo.


float total_linear_damp 🔗

  • float get_total_linear_damp()

La frequenza con cui il corpo smette di muoversi, se non ci sono altre forze che lo muovono.


Transform3D transform 🔗

La matrice di trasformazione del corpo.


Descrizioni dei metodi

void add_constant_central_force(force: Vector3 = Vector3(0, 0, 0)) 🔗

Aggiunge una forza direzionale costante senza influenzare la rotazione che continua a essere applicata nel tempo finché non viene cancellata con constant_force = Vector3(0, 0, 0).

Ciò equivale a usare add_constant_force() al centro di massa del corpo.


void add_constant_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗

Aggiunge una forza posizionata costante al corpo che continua a essere applicata nel tempo finché non viene cancellata con constant_force = Vector3(0, 0, 0).

position è lo scostamento dall'origine del corpo in coordinate globali.


void add_constant_torque(torque: Vector3) 🔗

Aggiunge una forza rotazionale costante senza influenzare la posizione che continua a essere applicata nel tempo finché non viene cancellata con constant_torque = Vector3(0, 0, 0).


void apply_central_force(force: Vector3 = Vector3(0, 0, 0)) 🔗

Applica una forza direzionale senza influenzare la rotazione. Una forza è dipendente dal tempo e pensata per essere applicata a ogni aggiornamento della fisica

Ciò equivale a usare apply_force() al centro di massa del corpo.


void apply_central_impulse(impulse: Vector3 = Vector3(0, 0, 0)) 🔗

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 "_force").

Ciò equivale a usare apply_impulse() al centro di massa del corpo.


void apply_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0)) 🔗

Applica una forza posizionata al corpo. Una forza è dipendente dal tempo e deve essere applicata a ogni aggiornamento della fisica.

position è lo scostamento dall'origine del corpo in coordinate globali.


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 "_force").

position è lo scostamento dall'origine del corpo in coordinate globali.


void apply_torque(torque: Vector3) 🔗

Applica una forza rotazionale senza influenzare la posizione. Una forza è dipendente dal tempo e deve essere applicata a ogni aggiornamento della fisica.

Nota: inverse_inertia è necessario affinché questo funzioni. Per avere inverse_inertia, un CollisionShape3D attivo deve essere un figlio del nodo, oppure è possibile impostare manualmente inverse_inertia.


void apply_torque_impulse(impulse: Vector3) 🔗

Applica un impulso rotazionale al corpo senza influenzare la posizione.

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 "_force").

Nota: inverse_inertia è necessario affinché questo funzioni. Per avere inverse_inertia, un CollisionShape3D attivo deve essere un figlio del nodo, oppure è possibile impostare manualmente inverse_inertia.


Vector3 get_constant_force() const 🔗

Restituisce le forze posizionali costanti totali del corpo applicate durante ogni aggiornamento della fisica.

Vedi add_constant_force() e add_constant_central_force().


Vector3 get_constant_torque() const 🔗

Restituisce le forze rotazionali costanti totali del corpo applicate durante ogni aggiornamento della fisica.

Vedi add_constant_torque().


RID get_contact_collider(contact_idx: int) const 🔗

Restituisce il RID del collisore.


int get_contact_collider_id(contact_idx: int) const 🔗

Restituisce l'ID dell'oggetto del collisore.


Object get_contact_collider_object(contact_idx: int) const 🔗

Restituisce l'oggetto collisore.


Vector3 get_contact_collider_position(contact_idx: int) const 🔗

Restituisce la posizione del punto di contatto sul collisore nel sistema di coordinate globale.


int get_contact_collider_shape(contact_idx: int) const 🔗

Restituisce l'indice di forma del collisore.


Vector3 get_contact_collider_velocity_at_position(contact_idx: int) const 🔗

Restituisce il vettore della velocità lineare nel punto di contatto del collisore.


int get_contact_count() const 🔗

Restituisce il numero di contatti che questo corpo ha con altri corpi.

Nota: Per impostazione predefinita, restituisce 0 a meno che i corpi non siano configurati per monitorare i contatti. Vedi RigidBody3D.contact_monitor.


Vector3 get_contact_impulse(contact_idx: int) const 🔗

Impulso creato dal contatto.


Vector3 get_contact_local_normal(contact_idx: int) const 🔗

Restituisce la normale locale nel punto di contatto.


Vector3 get_contact_local_position(contact_idx: int) const 🔗

Restituisce la posizione del punto di contatto sul corpo nel sistema di coordinate globale.


int get_contact_local_shape(contact_idx: int) const 🔗

Restituisce l'indice di forma locale della collisione.


Vector3 get_contact_local_velocity_at_position(contact_idx: int) const 🔗

Restituisce il vettore di velocità lineare al punto di contatto del corpo.


PhysicsDirectSpaceState3D get_space_state() 🔗

Restituisce lo stato attuale dello spazio, utile per le interrogazioni.


Vector3 get_velocity_at_local_position(local_position: Vector3) const 🔗

Returns the body's velocity at the given relative position.

local_position is the offset from the body origin in global coordinates.


void integrate_forces() 🔗

Aggiorna la velocità lineare e angolare del corpo applicando gravità e smorzamento per l'equivalente di un tick di fisica.


void set_constant_force(force: Vector3) 🔗

Imposta le forze posizionali costanti totali del corpo applicate durante ogni aggiornamento di fisica.

Vedi add_constant_force() e add_constant_central_force().


void set_constant_torque(torque: Vector3) 🔗

Imposta le forze rotazionali costanti totali del corpo applicate durante ogni aggiornamento di fisica.

Vedi add_constant_torque().