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.

CollisionObject3D

Eredita: Node3D < Node < Object

Ereditato da: Area3D, PhysicsBody3D

Classe di base astratta per gli oggetti di fisica 3D.

Descrizione

Classe base astratta per oggetti di fisica 3D. CollisionObject3D può contenere un numero qualsiasi di Shape3D per la collisione. Ogni forma deve essere assegnata a un proprietario di forme. I proprietari di forme non sono nodi e non compaiono nell'editor, ma sono accessibili tramite codice attraverso i metodi shape_owner_*.

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.

Proprietà

int

collision_layer

1

int

collision_mask

1

float

collision_priority

1.0

DisableMode

disable_mode

0

bool

input_capture_on_drag

false

bool

input_ray_pickable

true

Metodi

void

_input_event(camera: Camera3D, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) virtual

void

_mouse_enter() virtual

void

_mouse_exit() virtual

int

create_shape_owner(owner: Object)

bool

get_collision_layer_value(layer_number: int) const

bool

get_collision_mask_value(layer_number: int) const

RID

get_rid() const

PackedInt32Array

get_shape_owners()

bool

is_shape_owner_disabled(owner_id: int) const

void

remove_shape_owner(owner_id: int)

void

set_collision_layer_value(layer_number: int, value: bool)

void

set_collision_mask_value(layer_number: int, value: bool)

int

shape_find_owner(shape_index: int) const

void

shape_owner_add_shape(owner_id: int, shape: Shape3D)

void

shape_owner_clear_shapes(owner_id: int)

Object

shape_owner_get_owner(owner_id: int) const

Shape3D

shape_owner_get_shape(owner_id: int, shape_id: int) const

int

shape_owner_get_shape_count(owner_id: int) const

int

shape_owner_get_shape_index(owner_id: int, shape_id: int) const

Transform3D

shape_owner_get_transform(owner_id: int) const

void

shape_owner_remove_shape(owner_id: int, shape_id: int)

void

shape_owner_set_disabled(owner_id: int, disabled: bool)

void

shape_owner_set_transform(owner_id: int, transform: Transform3D)


Segnali

input_event(camera: Node, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) 🔗

Emesso quando l'oggetto riceve un InputEvent non gestito. event_position è la posizione nello spazio mondiale del puntatore del mouse sulla superficie della forma con indice shape_idx e normal è il vettore normale della superficie in quel punto.


mouse_entered() 🔗

Emesso quando il puntatore del mouse entra in una delle forme di questo oggetto. Richiede che input_ray_pickable sia true e che almeno un bit in collision_layer sia impostato.

Nota: A causa della mancanza di rilevamento continuo delle collisioni, questo segnale potrebbe non essere emesso nell'ordine previsto se il mouse si muove abbastanza velocemente e l'area di CollisionObject3D è piccola. Questo segnale potrebbe non essere emesso anche se un altro CollisionObject3D si sovrappone al CollisionObject3D in questione.


mouse_exited() 🔗

Emesso quando il puntatore del mouse esce da una delle forme di questo oggetto. Richiede che input_ray_pickable sia true e che almeno un bit in collision_layer sia impostato.

Nota: A causa della mancanza di rilevamento continuo delle collisioni, questo segnale potrebbe non essere emesso nell'ordine previsto se il mouse si muove abbastanza velocemente e l'area di CollisionObject3D è piccola. Questo segnale potrebbe non essere emesso anche se un altro CollisionObject3D si sovrappone al CollisionObject3D in questione.


Enumerazioni

enum DisableMode: 🔗

DisableMode DISABLE_MODE_REMOVE = 0

Quando Node.process_mode è impostato su Node.PROCESS_MODE_DISABLED, rimuovi dalla simulazione di fisica per fermare tutte le interazioni fisiche con questo CollisionObject3D.

Riaggiunge il corpo automaticamente alla simulazione di fisica quando il Node viene nuovamente elaborato.

DisableMode DISABLE_MODE_MAKE_STATIC = 1

Quando Node.process_mode è impostato su Node.PROCESS_MODE_DISABLED, rendi statico il corpo. Non influisce su Area3D. PhysicsBody3D non può essere influenzato da forze o altri corpi mentre è statico.

Ripristina il PhysicsBody3D automaticamente alla modalità originale quando il Node viene nuovamente elaborato.

DisableMode DISABLE_MODE_KEEP_ACTIVE = 2

Quando Node.process_mode è impostato su Node.PROCESS_MODE_DISABLED, non influire sulla simulazione di fisica.


Descrizioni delle proprietà

int collision_layer = 1 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

Gli strati di fisica in cui si trova questo CollisionObject3D. Gli oggetti di collisione possono esistere in uno o più dei 32 strati diversi. Vedi anche collision_mask.

Nota: L'oggetto A può rilevare un contatto con l'oggetto B solo se l'oggetto B si trova in uno qualsiasi degli strati che l'oggetto A scansiona. Vedi Strati e maschere di collisione nella documentazione per ulteriori informazioni.


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

Gli strati di fisica scansionati da questo CollisionObject3D. Gli oggetti di collisione possono scansionare uno o più dei 32 diversi strati. Vedi anche collision_layer.

Nota: L'oggetto A può rilevare un contatto con l'oggetto B solo se l'oggetto B si trova in uno qualsiasi degli strati che l'oggetto A scansiona. Vedi Strati e maschere di collisione nella documentazione per ulteriori informazioni.


float collision_priority = 1.0 🔗

  • void set_collision_priority(value: float)

  • float get_collision_priority()

La priorità usata per risolvere le collisioni quando si verifica la penetrazione. Maggiore è la priorità, minore sarà la penetrazione nell'oggetto. Questo può essere utilizzato ad esempio per impedire al giocatore di oltrepassare i limiti di un livello.


DisableMode disable_mode = 0 🔗

Definisce il comportamento nella fisica quando Node.process_mode è impostato su Node.PROCESS_MODE_DISABLED.


bool input_capture_on_drag = false 🔗

  • void set_capture_input_on_drag(value: bool)

  • bool get_capture_input_on_drag()

Se true, CollisionObject3D continuerà a ricevere eventi di input mentre il mouse viene trascinato sulle sue forme.


bool input_ray_pickable = true 🔗

  • void set_ray_pickable(value: bool)

  • bool is_ray_pickable()

Se true, questo oggetto è selezionabile. Un oggetto selezionabile può rilevare l'ingresso e l'uscita del cursore del mouse e, se il cursore è al suo interno, segnalare eventi di input. Richiede che almeno un bit in collision_layer sia impostato.


Descrizioni dei metodi

void _input_event(camera: Camera3D, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) virtual 🔗

Riceve InputEvent non gestiti. event_position è la posizione nello spazio mondiale del puntatore del mouse sulla superficie della forma con indice shape_idx e normal è il vettore normale della superficie in quel punto. Connettiti al segnale input_event per recuperare facilmente questi eventi.

Nota: _input_event() richiede che input_ray_pickable sia true e che almeno un bit di collision_layer sia impostato.


void _mouse_enter() virtual 🔗

Chiamato quando il puntatore del mouse entra in una qualsiasi delle forme di questo oggetto. Richiede che input_ray_pickable sia true e che almeno un bit di collision_layer sia impostato. Nota che lo spostamento tra diverse forme all'interno di un singolo CollisionObject3D non provocherà la chiamata di questa funzione.


void _mouse_exit() virtual 🔗

Chiamato quando il puntatore del mouse esce da tutte le forme di questo oggetto. Richiede che input_ray_pickable sia true e che almeno un bit di collision_layer sia impostato. Nota che lo spostamento tra diverse forme all'interno di un singolo CollisionObject3D non provocherà la chiamata di questa funzione.


int create_shape_owner(owner: Object) 🔗

Crea un nuovo proprietario di forme per l'oggetto specificato. Restituisce owner_id del nuovo proprietario per un riferimento futuro.


bool get_collision_layer_value(layer_number: int) const 🔗

Restituisce se lo strato specificato di collision_layer è abilitato o meno, fornito un numero di strato layer_number tra 1 e 32.


bool get_collision_mask_value(layer_number: int) const 🔗

Restituisce se lo strato specificato della collision_mask è abilitato, fornito un numero di strato layer_number tra 1 e 32.


RID get_rid() const 🔗

Restituisce il RID dell'oggetto.


PackedInt32Array get_shape_owners() 🔗

Restituisce un Array di identificatori owner_id. Puoi usare questi id in altri metodi che accettano owner_id come argomento.


bool is_shape_owner_disabled(owner_id: int) const 🔗

Se true, il proprietario di forme e le sue forme sono disabilitati.


void remove_shape_owner(owner_id: int) 🔗

Rimuove il proprietario di forme specificato.


void set_collision_layer_value(layer_number: int, value: bool) 🔗

In base a value, abilita o disabilita lo strato specificato nel collision_layer, fornito un layer_number compreso tra 1 e 32.


void set_collision_mask_value(layer_number: int, value: bool) 🔗

In base a value, abilita o disabilita lo strato specificato nel collision_mask, fornito un layer_number compreso tra 1 e 32.


int shape_find_owner(shape_index: int) const 🔗

Restituisce l'owner_id della forma specificata.


void shape_owner_add_shape(owner_id: int, shape: Shape3D) 🔗

Aggiunge una Shape2D al proprietario di forme.


void shape_owner_clear_shapes(owner_id: int) 🔗

Rimuove tutte le forme dal proprietario di forme.


Object shape_owner_get_owner(owner_id: int) const 🔗

Restituisce l'oggetto genitore del proprietario di forme specificato.


Shape3D shape_owner_get_shape(owner_id: int, shape_id: int) const 🔗

Restituisce il Shape3D con l'ID specificato dal proprietario di forme specificato.


int shape_owner_get_shape_count(owner_id: int) const 🔗

Restituisce il numero di forme che il proprietario di forme specificato contiene.


int shape_owner_get_shape_index(owner_id: int, shape_id: int) const 🔗

Restituisce l'indice figlio del Shape3D con l'ID specificato dal proprietario di forme specificato.


Transform3D shape_owner_get_transform(owner_id: int) const 🔗

Restituisce il Transform3D del proprietario di forme.


void shape_owner_remove_shape(owner_id: int, shape_id: int) 🔗

Rimuove una forma dal proprietario di forme specificato.


void shape_owner_set_disabled(owner_id: int, disabled: bool) 🔗

Se true, disabilita il proprietario di forme specificato.


void shape_owner_set_transform(owner_id: int, transform: Transform3D) 🔗

Imposta il Transform3D del proprietario di forme specificato.