CollisionObject2D
Hereda: Node2D < CanvasItem < Node < Object
Heredado por: Area2D, PhysicsBody2D
Clase base abstracta para objetos de física 2D.
Descripción
Clase base abstracta para objetos físicos 2D. CollisionObject2D puede contener cualquier número de Shape2Ds para la colisión. Cada forma debe ser asignada a un propietario de la forma. Los propietarios de la forma no son nodos y no aparecen en el editor, pero son accesibles a través del código usando los métodos shape_owner_*.
Nota: Sólo se admiten colisiones entre objetos dentro del mismo canvas (Viewport o CanvasLayer). El comportamiento de las colisiones entre objetos en diferentes canvas no está definido.
Propiedades
|
||
|
||
|
||
|
||
|
Métodos
Señales
input_event(viewport: Node, event: InputEvent, shape_idx: int) 🔗
Emitida cuando ocurre un evento de entrada. Requiere que input_pickable sea true y que al menos un bit de collision_layer esté establecido. Véase _input_event() para más detalles.
mouse_entered() 🔗
Emitida cuando el puntero del ratón entra en cualquiera de las formas de este objeto. Requiere que input_pickable sea true y que al menos un bit de collision_layer esté establecido. Ten en cuenta que moverse entre diferentes formas dentro de un único CollisionObject2D no provocará que esta señal se emita.
Nota: Debido a la falta de detección de colisión continua, esta señal puede no emitirse en el orden esperado si el ratón se mueve lo suficientemente rápido y el área del CollisionObject2D es pequeña. Esta señal también puede no emitirse si otro CollisionObject2D está solapando al CollisionObject2D en cuestión.
mouse_exited() 🔗
Emitida cuando el puntero del ratón sale de todas las formas de este objeto. Requiere que input_pickable sea true y que al menos un bit de collision_layer esté establecido. Ten en cuenta que moverse entre diferentes formas dentro de un único CollisionObject2D no provocará que esta señal se emita.
Nota: Debido a la falta de detección de colisión continua, esta señal puede no emitirse en el orden esperado si el ratón se mueve lo suficientemente rápido y el área del CollisionObject2D es pequeña. Esta señal también puede no emitirse si otro CollisionObject2D está solapando al CollisionObject2D en cuestión.
mouse_shape_entered(shape_idx: int) 🔗
Emitida cuando el puntero del ratón entra en cualquiera de las formas de este objeto o se mueve de una forma a otra. shape_idx es el índice hijo de la Shape2D recién entrada. Requiere que input_pickable sea true y que al menos un bit de collision_layer esté establecido.
mouse_shape_exited(shape_idx: int) 🔗
Emitida cuando el puntero del ratón sale de cualquiera de las formas de este objeto. shape_idx es el índice hijo de la Shape2D de la que se ha salido. Requiere que input_pickable sea true y que al menos un bit de collision_layer esté establecido.
Enumeraciones
enum DisableMode: 🔗
DisableMode DISABLE_MODE_REMOVE = 0
Cuando Node.process_mode se establece en Node.PROCESS_MODE_DISABLED, se elimina de la simulación de físicas para detener todas las interacciones de físicas con este CollisionObject2D.
Se vuelve a añadir automáticamente a la simulación de físicas cuando el Node se procesa de nuevo.
DisableMode DISABLE_MODE_MAKE_STATIC = 1
Cuando Node.process_mode se establece en Node.PROCESS_MODE_DISABLED, hace que el cuerpo sea estático. No afecta a Area2D. Un PhysicsBody2D no puede ser afectado por fuerzas u otros cuerpos mientras es estático.
Automáticamente devuelve el PhysicsBody2D a su modo original cuando el Node se procesa de nuevo.
DisableMode DISABLE_MODE_KEEP_ACTIVE = 2
Cuando Node.process_mode se establece en Node.PROCESS_MODE_DISABLED, no afecta a la simulación de físicas.
Descripciones de Propiedades
Las capas de físicas en las que se encuentra este CollisionObject2D. Los objetos de colisión pueden existir en una o más de 32 capas diferentes. Ver también collision_mask.
Nota: Un objeto A puede detectar un contacto con un objeto B solo si el objeto B está en alguna de las capas que el objeto A escanea. Para más información, Véase Capas y máscaras de colisión en la documentación.
Las capas de físicas que este CollisionObject2D escanea. Los objetos de colisión pueden escanear una o más de 32 capas diferentes. Véase también collision_layer.
Nota: Un objeto A puede detectar un contacto con un objeto B solo si el objeto B está en alguna de las capas que el objeto A escanea. Para más información, Véase Capas y máscaras de colisión en la documentación.
float collision_priority = 1.0 🔗
La prioridad usada para resolver colisiones cuando ocurre penetración. Cuanto mayor sea la prioridad, menor será la penetración en el objeto. Esto puede usarse, por ejemplo, para evitar que el jugador atraviese los límites de un nivel.
DisableMode disable_mode = 0 🔗
void set_disable_mode(value: DisableMode)
DisableMode get_disable_mode()
Define el comportamiento en la física cuando Node.process_mode se establece a Node.PROCESS_MODE_DISABLED.
Si es true, este objeto es seleccionable. Un objeto seleccionable puede detectar la entrada/salida del puntero del ratón y, si el ratón está dentro de él, informar de los eventos de entrada. Requiere que al menos un bit de collision_layer esté establecido.
Descripciones de Métodos
void _input_event(viewport: Viewport, event: InputEvent, shape_idx: int) virtual 🔗
Acepta InputEvents no gestionados. shape_idx es el índice hijo del Shape2D clickeado. Conéctate a la input_event para capturar fácilmente estos eventos.
Nota: _input_event() requiere que input_pickable sea true y que al menos un bit de collision_layer esté establecido.
void _mouse_enter() virtual 🔗
Llamado cuando el puntero del ratón entra en cualquiera de las formas de este objeto. Requiere que input_pickable sea true y que al menos un bit de collision_layer esté establecido. Ten en cuenta que moverte entre diferentes formas dentro de un único CollisionObject2D no causará que esta función sea llamada.
void _mouse_exit() virtual 🔗
Llamado cuando el puntero del ratón sale de todas las formas de este objeto. Requiere que input_pickable sea true y que al menos un bit de collision_layer esté establecido. Ten en cuenta que moverte entre diferentes formas dentro de un único CollisionObject2D no causará que esta función sea llamada.
void _mouse_shape_enter(shape_idx: int) virtual 🔗
Llamado cuando el puntero del ratón entra en cualquiera de las formas de este objeto o se mueve de una forma a otra. shape_idx es el índice del hijo Shape2D recién entrado. Requiere que input_pickable sea true y que al menos un bit de collision_layer esté establecido.
void _mouse_shape_exit(shape_idx: int) virtual 🔗
Llamado cuando el puntero del ratón sale de cualquiera de las formas de este objeto. shape_idx es el índice hijo del Shape2D que se ha salido. Requiere que input_pickable sea true y al menos un bit de collision_layer esté establecido.
int create_shape_owner(owner: Object) 🔗
Crea un nuevo dueño de la forma para el objeto dado. Devuelve owner_id del nuevo propietario para futuras referencias.
bool get_collision_layer_value(layer_number: int) const 🔗
Devuelve si la capa especificada de collision_layer está habilitada o no, dado un layer_number entre 1 y 32.
bool get_collision_mask_value(layer_number: int) const 🔗
Devuelve si la capa especificada de collision_mask está habilitada o no, dado un layer_number entre 1 y 32.
Devuelve el RID del objeto.
float get_shape_owner_one_way_collision_margin(owner_id: int) const 🔗
Devuelve el one_way_collision_margin del propietario de la forma identificado por el owner_id dado.
PackedInt32Array get_shape_owners() 🔗
Devuelve un Array de identificadores owner_id. Puedes usar estos identificadores en otros métodos que toman owner_id como argumento.
bool is_shape_owner_disabled(owner_id: int) const 🔗
Si es true, el propietario de la forma y sus formas se desactivan.
bool is_shape_owner_one_way_collision_enabled(owner_id: int) const 🔗
Devuelve true si las colisiones para el propietario de la forma originadas por este CollisionObject2D no serán reportadas como colisionadas con los CollisionObject2Ds.
void remove_shape_owner(owner_id: int) 🔗
Elimina al dueño de la forma dada.
void set_collision_layer_value(layer_number: int, value: bool) 🔗
Basado en value, habilita o deshabilita la capa especificada en collision_layer, dado un layer_number entre 1 y 32.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
Basado en value, habilita o deshabilita la capa especificada en collision_mask, dado un layer_number entre 1 y 32.
int shape_find_owner(shape_index: int) const 🔗
Devuelve el owner_id de la forma dada.
void shape_owner_add_shape(owner_id: int, shape: Shape2D) 🔗
Añade un Shape2D al dueño de la forma.
void shape_owner_clear_shapes(owner_id: int) 🔗
Elimina todas las formas del dueño de la forma.
Object shape_owner_get_owner(owner_id: int) const 🔗
Devuelve el objeto padre del propietario de la forma dada.
Shape2D shape_owner_get_shape(owner_id: int, shape_id: int) const 🔗
Devuelve la Shape2D con el ID dado del propietario de la forma especificado.
int shape_owner_get_shape_count(owner_id: int) const 🔗
Devuelve el número de formas que contiene el propietario de la forma dada.
int shape_owner_get_shape_index(owner_id: int, shape_id: int) const 🔗
Devuelve el índice hijo de la Shape2D con el ID dado del propietario de la forma especificado.
Transform2D shape_owner_get_transform(owner_id: int) const 🔗
Devuelve la forma del dueño Transform2D.
void shape_owner_remove_shape(owner_id: int, shape_id: int) 🔗
Quita una forma del dueño de la forma dada.
void shape_owner_set_disabled(owner_id: int, disabled: bool) 🔗
Si es true, deshabilita al dueño de la forma dada.
void shape_owner_set_one_way_collision(owner_id: int, enable: bool) 🔗
Si enable es true, las colisiones para el propietario de la forma que se originen en este CollisionObject2D no se reportarán a los CollisionObject2D con los que colisione.
void shape_owner_set_one_way_collision_margin(owner_id: int, margin: float) 🔗
Establece el one_way_collision_margin del propietario de la forma identificado por el owner_id dado a margin píxeles.
void shape_owner_set_transform(owner_id: int, transform: Transform2D) 🔗
Establece la Transform2D del propietario de la forma dada.