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.
Checking the stable version of the documentation...
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à
|
||
|
||
|
||
|
||
|
||
|
Metodi
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à
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.
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 🔗
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 🔗
void set_disable_mode(value: DisableMode)
DisableMode get_disable_mode()
Definisce il comportamento nella fisica quando Node.process_mode è impostato su Node.PROCESS_MODE_DISABLED.
bool input_capture_on_drag = false 🔗
Se true, CollisionObject3D continuerà a ricevere eventi di input mentre il mouse viene trascinato sulle sue forme.
bool input_ray_pickable = true 🔗
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.
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.