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.

CollisionObject2D

Eredita: Node2D < CanvasItem < Node < Object

Ereditato da: Area2D, PhysicsBody2D

Classe di base astratta per oggetti di fisica 2D.

Descrizione

Classe base astratta per oggetti di fisica 2D. CollisionObject2D può contenere un numero qualsiasi di Shape2D 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_*.

Nota: Sono supportate solo le collisioni tra oggetti all'interno dello stesso canvas (il canvas Viewport o CanvasLayer). Il comportamento delle collisioni tra oggetti in canvas diverse non è definito.

Proprietà

int

collision_layer

1

int

collision_mask

1

float

collision_priority

1.0

DisableMode

disable_mode

0

bool

input_pickable

true

Metodi

void

_input_event(viewport: Viewport, event: InputEvent, shape_idx: int) virtual

void

_mouse_enter() virtual

void

_mouse_exit() virtual

void

_mouse_shape_enter(shape_idx: int) virtual

void

_mouse_shape_exit(shape_idx: int) 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

Vector2

get_shape_owner_one_way_collision_direction(owner_id: int) const

float

get_shape_owner_one_way_collision_margin(owner_id: int) const

PackedInt32Array

get_shape_owners()

bool

is_shape_owner_disabled(owner_id: int) const

bool

is_shape_owner_one_way_collision_enabled(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: Shape2D)

void

shape_owner_clear_shapes(owner_id: int)

Object

shape_owner_get_owner(owner_id: int) const

Shape2D

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

Transform2D

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_one_way_collision(owner_id: int, enable: bool)

void

shape_owner_set_one_way_collision_direction(owner_id: int, direction: Vector2)

void

shape_owner_set_one_way_collision_margin(owner_id: int, margin: float)

void

shape_owner_set_transform(owner_id: int, transform: Transform2D)


Segnali

input_event(viewport: Node, event: InputEvent, shape_idx: int) 🔗

Emesso quando si verifica un evento di input. Richiede che input_pickable sia true e che almeno un bit in collision_layer sia impostato. Vedi _input_event() per i dettagli.


mouse_entered() 🔗

Emesso quando il puntatore del mouse entra in una delle forme di questo oggetto. Richiede che input_pickable sia true e che almeno un bit in collision_layer sia impostato. Tieni presente che lo spostamento tra forme diverse all'interno di un singolo CollisionObject2D non causerà l'emissione di questo segnale.

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 CollisionObject2D è piccola. Questo segnale potrebbe non essere emesso anche se un altro CollisionObject2D si sovrappone al CollisionObject2D in questione.


mouse_exited() 🔗

Emesso quando il puntatore del mouse esce da una delle forme di questo oggetto. Richiede che input_pickable sia true e che almeno un bit in collision_layer sia impostato. Tieni presente che lo spostamento tra forme diverse all'interno di un singolo CollisionObject2D non causerà l'emissione di questo segnale.

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 CollisionObject2D è piccola. Questo segnale potrebbe non essere emesso anche se un altro CollisionObject2D si sovrappone al CollisionObject2D in questione.


mouse_shape_entered(shape_idx: int) 🔗

Emesso quando il puntatore del mouse entra in una qualsiasi forma di questo oggetto o si sposta da una forma all'altra. shape_idx è l'indice figlio del Shape2D nuovamente entrato. Richiede che input_pickable sia true e che almeno un bit in collision_layer sia impostato.


mouse_shape_exited(shape_idx: int) 🔗

Emesso quando il puntatore del mouse esce da una qualsiasi forma di questo oggetto. shape_idx è l'indice figlio del Shape2D uscito. Richiede che input_pickable sia true e che almeno un bit in collision_layer sia impostato.


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

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 Area2D. PhysicsBody2D non può essere influenzato da forze o altri corpi mentre è statico.

Ripristina il PhysicsBody2D 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 CollisionObject2D. 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 CollisionObject2D. 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_pickable = true 🔗

  • void set_pickable(value: bool)

  • bool is_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(viewport: Viewport, event: InputEvent, shape_idx: int) virtual 🔗

Accetta InputEvent non gestiti. shape_idx è l'indice figlio del Shape2D cliccato. Connettiti a input_event per recuperare facilmente questi eventi.

Nota: _input_event() richiede che input_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_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 CollisionObject2D 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_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 CollisionObject2D non provocherà la chiamata di questa funzione.


void _mouse_shape_enter(shape_idx: int) virtual 🔗

Chiamato quando il puntatore del mouse entra in una qualsiasi delle forme di questo oggetto o si sposta da una forma all'altra. Per essere chiamato, richiede che input_pickable sia true e che almeno un bit di collision_layer sia impostato.


void _mouse_shape_exit(shape_idx: int) virtual 🔗

Chiamato quando il puntatore del mouse esce da una qualsiasi delle forme di questo oggetto. Per essere chiamato, richiede che input_pickable sia true e che almeno un bit di collision_layer sia impostato.


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.


Vector2 get_shape_owner_one_way_collision_direction(owner_id: int) const 🔗

Returns the one_way_collision_direction of the shape owner identified by the given owner_id.


float get_shape_owner_one_way_collision_margin(owner_id: int) const 🔗

Restituisce il one_way_collision_margin del proprietario della forma identificato dall'owner_id.


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.


bool is_shape_owner_one_way_collision_enabled(owner_id: int) const 🔗

Restituisce true se le collisioni per il proprietario di forme provenienti da questo CollisionObject2D non saranno segnalate come in collisione con i CollisionObject2D.


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

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.


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

Restituisce il Shape2D 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 Shape2D con l'ID specificato dal proprietario di forme specificato.


Transform2D shape_owner_get_transform(owner_id: int) const 🔗

Restituisce il Transform2D 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_one_way_collision(owner_id: int, enable: bool) 🔗

Se enable è true, le collisioni per il nodo che ha questo CollisionObject2D non saranno riportate come tali con altri CollisionObject2D.


void shape_owner_set_one_way_collision_direction(owner_id: int, direction: Vector2) 🔗

Sets the one_way_collision_direction of the shape owner identified by the given owner_id to direction.


void shape_owner_set_one_way_collision_margin(owner_id: int, margin: float) 🔗

Imposta il one_way_collision_margin del proprietario di forme identificato da owner_id a margin in pixel.


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

Imposta il Transform2D del proprietario di forme specificato.