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.

PhysicsDirectBodyState2D

Eredita: Object

Ereditato da: PhysicsDirectBodyState2DExtension

Fornisce accesso diretto a un corpo fisico nel PhysicsServer2D.

Descrizione

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

Tutorial

Proprietà

float

angular_velocity

Vector2

center_of_mass

Vector2

center_of_mass_local

int

collision_layer

int

collision_mask

float

inverse_inertia

float

inverse_mass

Vector2

linear_velocity

bool

sleeping

float

step

float

total_angular_damp

Vector2

total_gravity

float

total_linear_damp

Transform2D

transform

Metodi

void

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

void

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

void

add_constant_torque(torque: float)

void

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

void

apply_central_impulse(impulse: Vector2)

void

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

void

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

void

apply_torque(torque: float)

void

apply_torque_impulse(impulse: float)

Vector2

get_constant_force() const

float

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

Vector2

get_contact_collider_position(contact_idx: int) const

int

get_contact_collider_shape(contact_idx: int) const

Vector2

get_contact_collider_velocity_at_position(contact_idx: int) const

int

get_contact_count() const

Vector2

get_contact_impulse(contact_idx: int) const

Vector2

get_contact_local_normal(contact_idx: int) const

Vector2

get_contact_local_position(contact_idx: int) const

int

get_contact_local_shape(contact_idx: int) const

Vector2

get_contact_local_velocity_at_position(contact_idx: int) const

PhysicsDirectSpaceState2D

get_space_state()

Vector2

get_velocity_at_local_position(local_position: Vector2) const

void

integrate_forces()

void

set_constant_force(force: Vector2)

void

set_constant_torque(torque: float)


Descrizioni delle proprietà

float angular_velocity 🔗

  • void set_angular_velocity(value: float)

  • float get_angular_velocity()

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


Vector2 center_of_mass 🔗

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


Vector2 center_of_mass_local 🔗

  • Vector2 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.


float inverse_inertia 🔗

  • float get_inverse_inertia()

L'inverso dell'inerzia del corpo.


float inverse_mass 🔗

  • float get_inverse_mass()

L'inverso della massa del corpo.


Vector2 linear_velocity 🔗

  • void set_linear_velocity(value: Vector2)

  • Vector2 get_linear_velocity()

La velocità lineare del corpo in pixel al secondo.


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.


Vector2 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.


Transform2D transform 🔗

La matrice di trasformazione del corpo.


Descrizioni dei metodi

void add_constant_central_force(force: Vector2 = Vector2(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 = Vector2(0, 0).

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


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

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

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


void add_constant_torque(torque: float) 🔗

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


void apply_central_force(force: Vector2 = Vector2(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: Vector2) 🔗

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: Vector2, position: Vector2 = Vector2(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: Vector2, position: Vector2 = Vector2(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: float) 🔗

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 CollisionShape2D attivo deve essere un figlio del nodo, oppure è possibile impostare manualmente inverse_inertia.


void apply_torque_impulse(impulse: float) 🔗

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 CollisionShape2D attivo deve essere un figlio del nodo, oppure è possibile impostare manualmente inverse_inertia.


Vector2 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().


float 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 del collisore. Ciò dipende da come è stato creato (restituirà un nodo di scena se è stato utilizzato per crearlo).


Vector2 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.


Vector2 get_contact_collider_velocity_at_position(contact_idx: int) const 🔗

Restituisce il vettore di velocità al 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 RigidBody2D.contact_monitor.


Vector2 get_contact_impulse(contact_idx: int) const 🔗

Restituisce l'impulso creato dal contatto.


Vector2 get_contact_local_normal(contact_idx: int) const 🔗

Restituisce la normale locale nel punto di contatto.


Vector2 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.


Vector2 get_contact_local_velocity_at_position(contact_idx: int) const 🔗

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


PhysicsDirectSpaceState2D get_space_state() 🔗

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


Vector2 get_velocity_at_local_position(local_position: Vector2) 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: Vector2) 🔗

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: float) 🔗

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

Vedi add_constant_torque().