CollisionObject2D

Наследует: Node2D < CanvasItem < Node < Object

Наследуется от: Area2D, PhysicsBody2D

Абстрактный базовый класс для 2D физических объектов.

Описание

Абстрактный базовый класс для 2D-объектов физики. CollisionObject2D может содержать любое количество Shape2D для столкновения. Каждая форма должна быть назначена владельцу формы. Владельцы формы не являются узлами и не отображаются в редакторе, но доступны через код с использованием методов shape_owner_*.

Примечание: Поддерживаются только столкновения между объектами в пределах одного холста (холст Viewport или CanvasLayer). Поведение столкновений между объектами в разных холстах не определено.

Свойства

int

collision_layer

1

int

collision_mask

1

float

collision_priority

1.0

DisableMode

disable_mode

0

bool

input_pickable

true

Методы

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

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_margin(owner_id: int, margin: float)

void

shape_owner_set_transform(owner_id: int, transform: Transform2D)


Сигналы

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

Вызывается при возникновении события ввода. Требует, чтобы input_pickable был true и был установлен хотя бы один бит collision_layer. Подробности см. в _input_event().


mouse_entered() 🔗

Выдается, когда указатель мыши входит в любую из фигур этого объекта. Требует, чтобы input_pickable был true и был установлен хотя бы один бит collision_layer. Обратите внимание, что перемещение между различными фигурами в пределах одного CollisionObject2D не приведет к выдаче этого сигнала.

Примечание: Из-за отсутствия непрерывного обнаружения столкновений этот сигнал может не выдаваться в ожидаемом порядке, если мышь движется достаточно быстро, а область CollisionObject2D мала. Этот сигнал также может не выдаваться, если другой CollisionObject2D перекрывает рассматриваемый CollisionObject2D.


mouse_exited() 🔗

Выдается, когда указатель мыши покидает все формы этого объекта. Требует, чтобы input_pickable был true и был установлен хотя бы один бит collision_layer. Обратите внимание, что перемещение между различными формами в пределах одного CollisionObject2D не приведет к выдаче этого сигнала.

Примечание: Из-за отсутствия непрерывного обнаружения столкновений этот сигнал может не выдаваться в ожидаемом порядке, если мышь движется достаточно быстро, а область CollisionObject2D мала. Этот сигнал также может не выдаваться, если другой CollisionObject2D перекрывает рассматриваемый CollisionObject2D.


mouse_shape_entered(shape_idx: int) 🔗

Вызывается, когда указатель мыши входит в любую из фигур этого объекта или перемещается из одной фигуры в другую. shape_idx — это дочерний индекс вновь введенного Shape2D. Требует, чтобы input_pickable был true и был установлен хотя бы один бит collision_layer.


mouse_shape_exited(shape_idx: int) 🔗

Вызывается, когда указатель мыши покидает любую из фигур этого объекта. shape_idx — это дочерний индекс выведенного Shape2D. Требует, чтобы input_pickable был true и был установлен хотя бы один бит collision_layer.


Перечисления

enum DisableMode: 🔗

DisableMode DISABLE_MODE_REMOVE = 0

Когда Node.process_mode установлен на Node.PROCESS_MODE_DISABLED, удалить из симуляции физики, чтобы остановить все физические взаимодействия с этим CollisionObject2D.

Автоматически повторно добавляется в симуляцию физики, когда Node обрабатывается снова.

DisableMode DISABLE_MODE_MAKE_STATIC = 1

Когда Node.process_mode установлен на Node.PROCESS_MODE_DISABLED, сделайте тело статичным. Не влияет на Area2D. PhysicsBody2D не может быть подвержен воздействию сил или других тел, пока он статичен.

Автоматически верните PhysicsBody2D в исходный режим, когда Node обрабатывается снова.

DisableMode DISABLE_MODE_KEEP_ACTIVE = 2

Если Node.process_mode установлен в Node.PROCESS_MODE_DISABLED, это не влияет на физическую симуляцию.


Описания свойств

int collision_layer = 1 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

Физические слои, в которых находится CollisionObject2D. Объекты столкновений могут существовать в одном или нескольких из 32 различных слоев. См. также collision_mask.

Примечание: Объект A может обнаружить контакт с объектом B, только если объект B находится в любом из слоев, которые сканирует объект A. См. Слои и маски столкновений в документации для получения дополнительной информации.


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

Физические слои, которые сканирует CollisionObject2D. Объекты столкновений могут сканировать один или несколько из 32 различных слоев. См. также collision_layer.

Примечание: Объект A может обнаружить контакт с объектом B, только если объект B находится в любом из слоев, которые сканирует объект A. См. Слои и маски столкновений в документации для получения дополнительной информации.


float collision_priority = 1.0 🔗

  • void set_collision_priority(value: float)

  • float get_collision_priority()

Приоритет, используемый для решения столкновений при возникновении проникновения. Чем выше приоритет, тем ниже будет проникновение в объект. Это может быть использовано, например, для предотвращения прорыва игрока через границы уровня.


DisableMode disable_mode = 0 🔗

Определяет поведение в физике, когда Node.process_mode установлен в Node.PROCESS_MODE_DISABLED.


bool input_pickable = true 🔗

  • void set_pickable(value: bool)

  • bool is_pickable()

Если true, этот объект можно выбрать. Можно выбрать, обнаружив вход/выход указателя мыши, и если мышь находится внутри него, сообщать о событиях ввода. Требуется установить хотя бы один бит collision_layer.


Описания метода

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

Принимает необработанные InputEvent. shape_idx — это дочерний индекс нажатого Shape2D. Подключитесь к input_event, чтобы легко получать эти события.

Примечание: _input_event() требует, чтобы input_pickable был true и был установлен хотя бы один бит collision_layer.


void _mouse_enter() virtual 🔗

Вызывается, когда указатель мыши входит в любую из фигур этого объекта. Требует, чтобы input_pickable был true и был установлен хотя бы один бит collision_layer. Обратите внимание, что перемещение между различными фигурами в пределах одного CollisionObject2D не приведет к вызову этой функции.


void _mouse_exit() virtual 🔗

Вызывается, когда указатель мыши покидает все формы этого объекта. Требует, чтобы input_pickable был true и был установлен хотя бы один бит collision_layer. Обратите внимание, что перемещение между различными формами в пределах одного CollisionObject2D не приведет к вызову этой функции.


void _mouse_shape_enter(shape_idx: int) virtual 🔗

Вызывается, когда указатель мыши входит в любую из фигур этого объекта или перемещается из одной фигуры в другую. shape_idx — это дочерний индекс вновь введенного Shape2D. Требует, чтобы input_pickable был true и был вызван хотя бы один бит collision_layer.


void _mouse_shape_exit(shape_idx: int) virtual 🔗

Вызывается, когда указатель мыши покидает любую из фигур этого объекта. shape_idx — это дочерний индекс выведенного Shape2D. Требует, чтобы input_pickable был true и был вызван хотя бы один бит collision_layer.


int create_shape_owner(owner: Object) 🔗

Создает нового владельца формы для данного объекта. Возвращает owner_id нового владельца для дальнейшего использования.


bool get_collision_layer_value(layer_number: int) const 🔗

Возвращает, включен ли указанный слой collision_layer, учитывая layer_number от 1 до 32.


bool get_collision_mask_value(layer_number: int) const 🔗

Возвращает, включен ли указанный слой collision_mask, учитывая layer_number от 1 до 32.


RID get_rid() const 🔗

Возвращает RID объекта.


float get_shape_owner_one_way_collision_margin(owner_id: int) const 🔗

Возвращает one_way_collision_margin владельца фигуры, идентифицированного заданным owner_id.


PackedInt32Array get_shape_owners() 🔗

Возвращает Array идентификаторов owner_id. Вы можете использовать эти идентификаторы в других методах, которые принимают owner_id в качестве аргумента.


bool is_shape_owner_disabled(owner_id: int) const 🔗

Если true, владелец фигуры и его фигуры отключены.


bool is_shape_owner_one_way_collision_enabled(owner_id: int) const 🔗

Возвращает true, если столкновения для владельца фигуры, происходящие из этого CollisionObject2D, не будут сообщаться о столкновениях с CollisionObject2D.


void remove_shape_owner(owner_id: int) 🔗

Удаляет указанного владельца фигуры.


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

На основе value включает или отключает указанный слой в collision_layer, учитывая layer_number от 1 до 32.


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

На основе value включает или отключает указанный слой в collision_mask при заданном layer_number от 1 до 32.


int shape_find_owner(shape_index: int) const 🔗

Возвращает owner_id заданной фигуры.


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

Добавляет 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 🔗

Возвращает Shape2D с указанным идентификатором от указанного владельца фигуры.


int shape_owner_get_shape_count(owner_id: int) const 🔗

Возвращает количество фигур, содержащихся в заданном владельце фигуры.


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

Возвращает дочерний индекс Shape2D с указанным идентификатором от указанного владельца фигуры.


Transform2D shape_owner_get_transform(owner_id: int) const 🔗

Возвращает Transform2D владельца фигуры.


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

Удаляет фигуру у указанного владельца фигуры.


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

Если true, отключает владельца данной фигуры.


void shape_owner_set_one_way_collision(owner_id: int, enable: bool) 🔗

Если enable имеет значение true, столкновения для владельца фигуры, происходящие от этого CollisionObject2D, не будут сообщаться о столкновениях с CollisionObject2D.


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

Устанавливает one_way_collision_margin владельца фигуры, идентифицированного заданным owner_id, на margin пикселей.


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

Устанавливает Transform2D для данного владельца фигуры.