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

Hereda: Node3D < Node < Object

Heredado por: Area3D, PhysicsBody3D

Clase base abstracta para objetos de física 3D.

Descripción

Clase base abstracta para objetos de físicas 3D. Un CollisionObject3D puede contener cualquier número de Shape3Ds para la colisión. Cada forma debe ser asignada a un propietario de forma. Los propietarios de formas no son nodos y no aparecen en el editor, pero son accesibles a través de código usando los métodos shape_owner_*.

Advertencia: Con una escala no uniforme, este nodo probablemente no se comportará como se espera. Se recomienda mantener su escala igual en todos los ejes y en su lugar ajustar su(s) forma(s) de colisión.

Propiedades

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

Métodos

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)


Señales

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

Emitida cuando el objeto recibe un InputEvent no gestionado. event_position es la ubicación en el espacio del mundo del puntero del ratón sobre la superficie de la forma con el índice shape_idx, y normal es el vector normal de la superficie en ese punto.


mouse_entered() 🔗

Emitida cuando el puntero del ratón entra en cualquiera de las formas de este objeto. Requiere que input_ray_pickable sea true y que al menos un bit de collision_layer esté establecido.

Nota: Debido a la falta de detección continua de colisiones, esta señal puede no emitirse en el orden esperado si el ratón se mueve lo suficientemente rápido y el área del CollisionObject3D es pequeña. Puede que esta señal tampoco se emita si otro CollisionObject3D se superpone al CollisionObject3D en cuestión.


mouse_exited() 🔗

Emitida cuando el puntero del ratón sale de todas las formas de este objeto. Requiere que input_ray_pickable sea true y que al menos un bit de collision_layer esté establecido.

Nota: Debido a la falta de detección continua de colisiones, esta señal puede no emitirse en el orden esperado si el ratón se mueve lo suficientemente rápido y el área de CollisionObject3D es pequeña. Esta señal también puede no emitirse si otro CollisionObject3D se superpone al CollisionObject3D en cuestión.


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 física para detener todas las interacciones físicas con este CollisionObject3D.

Se vuelve a añadir automáticamente a la simulación física cuando el Node se procesa de nuevo.

DisableMode DISABLE_MODE_MAKE_STATIC = 1

Cuando Node.process_mode se establece en Node.PROCESS_MODE_DISABLED, haz que el cuerpo sea estático. No afecta a Area3D. PhysicsBody3D no puede ser afectado por fuerzas u otros cuerpos mientras es estático.

Automáticamente devuelve PhysicsBody3D 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

int collision_layer = 1 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

Las capas de física en las que está este CollisionObject3D. 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 cualquiera de las capas que el objeto A escanea. Véase Capas y máscaras de colisión en la documentación para más información.


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

Las capas de física que escanea este CollisionObject3D. 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 cualquiera de las capas que el objeto A escanea. Véase Capas y máscaras de colisión en la documentación para más información.


float collision_priority = 1.0 🔗

  • void set_collision_priority(value: float)

  • float get_collision_priority()

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 🔗

Define el comportamiento en la física cuando Node.process_mode se establece a Node.PROCESS_MODE_DISABLED.


bool input_capture_on_drag = false 🔗

  • void set_capture_input_on_drag(value: bool)

  • bool get_capture_input_on_drag()

Si es true, el CollisionObject3D continuará recibiendo eventos de entrada mientras el ratón se arrastra sobre sus formas.


bool input_ray_pickable = true 🔗

  • void set_ray_pickable(value: bool)

  • bool is_ray_pickable()

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(camera: Camera3D, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) virtual 🔗

Recibe InputEvents no manejados. event_position es la ubicación en el espacio del mundo del puntero del ratón en la superficie de la forma con índice shape_idx y normal es el vector normal de la superficie en ese punto. Conéctate a la señal input_event para recoger fácilmente estos eventos.

Nota: _input_event() requiere que input_ray_pickable sea true y que al menos un bit de collision_layer esté establecido.


void _mouse_enter() virtual 🔗

Se llama cuando el puntero del ratón entra en cualquiera de las formas de este objeto. Requiere que input_ray_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 CollisionObject3D no provocará que se llame a esta función.


void _mouse_exit() virtual 🔗

Se llama cuando el puntero del ratón sale de todas las formas de este objeto. Requiere que input_ray_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 CollisionObject3D no provocará que se llame a esta función.


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.


RID get_rid() const 🔗

Devuelve el RID del objeto.


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.


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

Agrega una Shape3D al propietario 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.


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

Devuelve la Shape3D con el ID dado del propietario de la forma dado.


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 de hijo de la Shape3D con el ID dado del propietario de forma dado.


Transform3D shape_owner_get_transform(owner_id: int) const 🔗

Devuelve el Transform3D del propietario de la forma.


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_transform(owner_id: int, transform: Transform3D) 🔗

Establece la Transform3D del propietario de forma dado.