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...
CollisionObject2D
Наследует: Node2D < CanvasItem < Node < Object
Наследуется от: Area2D, PhysicsBody2D
Абстрактный базовый класс для 2D физических объектов.
Описание
Абстрактный базовый класс для 2D-объектов физики. CollisionObject2D может содержать любое количество Shape2D для столкновения. Каждая форма должна быть назначена владельцу формы. Владельцы формы не являются узлами и не отображаются в редакторе, но доступны через код с использованием методов shape_owner_*.
Примечание: Поддерживаются только столкновения между объектами в пределах одного холста (холст Viewport или CanvasLayer). Поведение столкновений между объектами в разных холстах не определено.
Свойства
|
||
|
||
|
||
|
||
|
Методы
Сигналы
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, это не влияет на физическую симуляцию.
Описания свойств
Физические слои, в которых находится CollisionObject2D. Объекты столкновений могут существовать в одном или нескольких из 32 различных слоев. См. также collision_mask.
Примечание: Объект A может обнаружить контакт с объектом B, только если объект B находится в любом из слоев, которые сканирует объект A. См. Слои и маски столкновений в документации для получения дополнительной информации.
Физические слои, которые сканирует CollisionObject2D. Объекты столкновений могут сканировать один или несколько из 32 различных слоев. См. также collision_layer.
Примечание: Объект A может обнаружить контакт с объектом B, только если объект B находится в любом из слоев, которые сканирует объект A. См. Слои и маски столкновений в документации для получения дополнительной информации.
float collision_priority = 1.0 🔗
Приоритет, используемый для решения столкновений при возникновении проникновения. Чем выше приоритет, тем ниже будет проникновение в объект. Это может быть использовано, например, для предотвращения прорыва игрока через границы уровня.
DisableMode disable_mode = 0 🔗
void set_disable_mode(value: DisableMode)
DisableMode get_disable_mode()
Определяет поведение в физике, когда Node.process_mode установлен в Node.PROCESS_MODE_DISABLED.
Если 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 объекта.
Vector2 get_shape_owner_one_way_collision_direction(owner_id: int) const 🔗
Возвращает one_way_collision_direction владельца фигуры, идентифицированного заданным owner_id.
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_direction(owner_id: int, direction: Vector2) 🔗
Устанавливает параметр one_way_collision_direction владельца фигуры, идентифицированного заданным параметром owner_id, равным direction.
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 для данного владельца фигуры.