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.

PhysicsDirectSpaceState3D

Eredita: Object

Ereditato da: PhysicsDirectSpaceState3DExtension

Fornisce accesso diretto a uno spazio fisico nel PhysicsServer3D.

Descrizione

Fornisce accesso diretto a uno spazio fisico nel PhysicsServer3D. È utilizzato principalmente per interrogare oggetti e aree che risiedono in un determinato spazio.

Nota: Questa classe non si dovrebbe istanziare direttamente. Utilizza World3D.direct_space_state per ottenere lo stato dello spazio fisico 3D del mondo.

Tutorial

Metodi

PackedFloat32Array

cast_motion(parameters: PhysicsShapeQueryParameters3D)

Array[Vector3]

collide_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32)

Dictionary

get_rest_info(parameters: PhysicsShapeQueryParameters3D)

Array[Dictionary]

intersect_point(parameters: PhysicsPointQueryParameters3D, max_results: int = 32)

Dictionary

intersect_ray(parameters: PhysicsRayQueryParameters3D)

Array[Dictionary]

intersect_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32)


Descrizioni dei metodi

PackedFloat32Array cast_motion(parameters: PhysicsShapeQueryParameters3D) 🔗

Verifica quanto lontano una Shape3D può muoversi senza entrare in collisione. Tutti i parametri per la richiesta, inclusi la forma e il movimento, sono forniti tramite un oggetto PhysicsShapeQueryParameters3D.

Restituisce un array con le proporzioni sicure e non sicure (tra 0 e 1) del movimento. La proporzione sicura è la frazione massima del movimento che può essere effettuata senza una collisione. La proporzione non sicura è la frazione minima della distanza che deve essere percorsa per una collisione. Se nessuna collisione è rilevata, sarà restituito un risultato di [1.0, 1.0].

Nota: Qualsiasi Shape3D con cui la forma è già in collisione, ad esempio all'interno, sarà ignorato. Utilizza collide_shape() per determinare le Shape3D con cui la forma è già in collisione.


Array[Vector3] collide_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) 🔗

Verifica le intersezioni di una forma, fornite tramite un oggetto PhysicsShapeQueryParameters3D, rispetto allo spazio. L'array restituito contiene una lista di punti in cui la forma ne interseca un'altra. Come con intersect_shape(), è possibile limitare il numero di risultati restituiti per risparmiare tempo di elaborazione.

I punti restituiti sono una lista di coppie di punti di contatto. Per ogni coppia, il primo punto è nella forma passata nell'oggetto PhysicsShapeQueryParameters3D, il secondo è nella forma in collisione dallo spazio fisico.

Nota: Questo metodo non tiene conto della proprietà motion dell'oggetto.


Dictionary get_rest_info(parameters: PhysicsShapeQueryParameters3D) 🔗

Verifica le intersezioni di una forma, fornite tramite un oggetto PhysicsShapeQueryParameters3D, rispetto allo spazio. Se entra in collisione con più di una forma, quella più vicina è selezionata. L'oggetto restituito è un dizionario contenente i seguenti campi:

collider_id: l'ID dell'oggetto in collisione.

linear_velocity: La velocità dell'oggetto in collisione come Vector3. Se l'oggetto è un Area3D, il risultato è (0, 0, 0).

normal: la normale alla superficie dell'oggetto nel punto di intersezione.

point: il punto di intersezione.

rid: il RID dell'oggetto in intersezione.

shape: l'indice della forma in collisione.

Se la forma non ha intersecato nulla, viene restituito un dizionario vuoto.

Nota: Questo metodo non tiene conto della proprietà motion dell'oggetto.


Array[Dictionary] intersect_point(parameters: PhysicsPointQueryParameters3D, max_results: int = 32) 🔗

Verifica se un punto è all'interno di una forma solida. La posizione e altri parametri sono definiti tramite PhysicsPointQueryParameters3D. Le forme in cui si trova il punto sono restituite in un array contenente dizionari con i seguenti campi:

collider: l'oggetto in collisione.

collider_id: l'ID dell'oggetto in collisione.

rid: il RID dell'oggetto intersecante.

shape: l'indice della forma in collisione.

È possibile limitare il numero di intersezioni con il parametro max_results, per ridurre il tempo di elaborazione.


Dictionary intersect_ray(parameters: PhysicsRayQueryParameters3D) 🔗

Interseca un raggio in un determinato spazio. La posizione del raggio e altri parametri sono definiti tramite PhysicsRayQueryParameters3D. L'oggetto restituito è un dizionario con i seguenti campi:

collider: l'oggetto in collisione.

collider_id: l'ID dell'oggetto in collisione.

normal: la normale alla superficie dell'oggetto nel punto di intersezione, o Vector3(0, 0, 0) se il raggio inizia all'interno della forma e PhysicsRayQueryParameters3D.hit_from_inside è true.

position: il punto di intersezione.

face_index: l'indice della faccia nel punto di intersezione.

Nota: Restituisce un numero valido solo se la forma intersecata è una ConcavePolygonShape3D. Altrimenti, viene restituito -1.

rid: il RID dell'oggetto in intersezione.

shape: l'indice della forma in collisione.

Se il raggio non ha intersecato nulla, un dizionario vuoto viene restituito.


Array[Dictionary] intersect_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) 🔗

Verifica se un punto è all'interno di una forma solida. La posizione e altri parametri sono definiti tramite PhysicsPointQueryParameters3D. Le forme in cui si trova il punto sono restituite in un array contenente dizionari con i seguenti campi:

collider: l'oggetto in collisione.

collider_id: l'ID dell'oggetto in collisione.

rid: il RID dell'oggetto intersecante.

shape: l'indice di forma della forma in collisione.

È possibile limitare il numero di intersezioni con il parametro max_results, per ridurre il tempo di elaborazione.

Nota: Questo metodo non tiene conto della proprietà motion dell'oggetto.