CollisionObject3D
Наследует: Node3D < Node < Object
Наследуется от: Area3D, PhysicsBody3D
Абстрактный базовый класс для трехмерных физических объектов.
Описание
Абстрактный базовый класс для 3D-физических объектов. CollisionObject3D может содержать любое количество Shape3D для столкновения. Каждая форма должна быть назначена владельцу формы. Владельцы формы не являются узлами и не отображаются в редакторе, но доступны через код с использованием методов shape_owner_*.
Предупреждение: При неравномерном масштабе этот узел, скорее всего, будет вести себя не так, как ожидалось. Рекомендуется сохранить его масштаб одинаковым по всем осям и вместо этого настроить его форму(ы) столкновения.
Свойства
|
||
|
||
|
||
|
||
|
||
|
Методы
Сигналы
input_event(camera: Node, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) 🔗
Генерируется, когда объект получает необработанное InputEvent. event_position — это местоположение указателя мыши в мировом пространстве на поверхности фигуры с индексом shape_idx, а normal — это вектор нормали поверхности в этой точке.
mouse_entered() 🔗
Выдается, когда указатель мыши входит в любую из форм этого объекта. Требует, чтобы input_ray_pickable был true и был установлен хотя бы один бит collision_layer.
Примечание: Из-за отсутствия непрерывного обнаружения столкновений этот сигнал может не выдаваться в ожидаемом порядке, если мышь движется достаточно быстро, а область CollisionObject3D мала. Этот сигнал также может не выдаваться, если другой CollisionObject3D перекрывает рассматриваемый CollisionObject3D.
mouse_exited() 🔗
Выдается, когда указатель мыши выходит за пределы всех форм этого объекта. Требует, чтобы input_ray_pickable был true и был установлен хотя бы один бит collision_layer.
Примечание: Из-за отсутствия непрерывного обнаружения столкновений этот сигнал может не выдаваться в ожидаемом порядке, если мышь движется достаточно быстро, а область CollisionObject3D мала. Этот сигнал также может не выдаваться, если другой CollisionObject3D перекрывает рассматриваемый CollisionObject3D.
Перечисления
enum DisableMode: 🔗
DisableMode DISABLE_MODE_REMOVE = 0
Когда Node.process_mode установлен на Node.PROCESS_MODE_DISABLED, удалить из моделирования физики, чтобы остановить все физические взаимодействия с этим CollisionObject3D.
Автоматически повторно добавляется в моделирование физики, когда Node обрабатывается снова.
DisableMode DISABLE_MODE_MAKE_STATIC = 1
Когда Node.process_mode установлен на Node.PROCESS_MODE_DISABLED, сделайте тело статичным. Не влияет на Area3D. PhysicsBody3D не может быть подвержен воздействию сил или других тел, пока он статичен.
Автоматически верните PhysicsBody3D в исходный режим, когда Node обрабатывается снова.
DisableMode DISABLE_MODE_KEEP_ACTIVE = 2
Если Node.process_mode установлен в Node.PROCESS_MODE_DISABLED, это не влияет на физическую симуляцию.
Описания свойств
Физические слои, в которых находится CollisionObject3D ****. Объекты столкновений могут существовать в одном или нескольких из 32 различных слоев. См. также collision_mask.
Примечание: Объект A может обнаружить контакт с объектом B, только если объект B находится в любом из слоев, которые сканирует объект A. См. Слои и маски столкновений в документации для получения дополнительной информации.
Слои физики этот CollisionObject3D сканирует. Объекты столкновений могут сканировать один или несколько из 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.
bool input_capture_on_drag = false 🔗
Если true, CollisionObject3D продолжит получать входные события при перемещении мыши по его фигуре.
bool input_ray_pickable = true 🔗
Если true, этот объект можно выбрать. Можно выбрать, обнаружив вход/выход указателя мыши, и если мышь находится внутри него, сообщать о событиях ввода. Требуется установить хотя бы один бит collision_layer.
Описания метода
void _input_event(camera: Camera3D, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) virtual 🔗
Получает необработанные InputEvent. event_position — это местоположение указателя мыши в мировом пространстве на поверхности фигуры с индексом shape_idx, а normal — это вектор нормали поверхности в этой точке. Подключитесь к сигналу input_event, чтобы легко получить эти события.
Примечание: _input_event() требует, чтобы input_ray_pickable был true и был установлен хотя бы один бит collision_layer.
void _mouse_enter() virtual 🔗
Вызывается, когда указатель мыши входит в любую из фигур этого объекта. Требует, чтобы input_ray_pickable был true и был установлен хотя бы один бит collision_layer. Обратите внимание, что перемещение между различными фигурами в пределах одного CollisionObject3D не приведет к вызову этой функции.
void _mouse_exit() virtual 🔗
Вызывается, когда указатель мыши покидает все формы этого объекта. Требует, чтобы input_ray_pickable был true и был установлен хотя бы один бит collision_layer. Обратите внимание, что перемещение между различными формами в пределах одного CollisionObject3D не приведет к вызову этой функции.
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 объекта.
PackedInt32Array get_shape_owners() 🔗
Возвращает Array идентификаторов owner_id. Вы можете использовать эти идентификаторы в других методах, которые принимают owner_id в качестве аргумента.
bool is_shape_owner_disabled(owner_id: int) const 🔗
Если true, владелец фигуры и его фигуры отключены.
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: Shape3D) 🔗
Добавляет 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 🔗
Возвращает Shape3D с указанным идентификатором от указанного владельца фигуры.
int shape_owner_get_shape_count(owner_id: int) const 🔗
Возвращает количество фигур, содержащихся в заданном владельце фигуры.
int shape_owner_get_shape_index(owner_id: int, shape_id: int) const 🔗
Возвращает дочерний индекс Shape3D с указанным идентификатором от указанного владельца фигуры.
Transform3D shape_owner_get_transform(owner_id: int) const 🔗
Возвращает Transform3D владельца фигуры.
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_transform(owner_id: int, transform: Transform3D) 🔗
Устанавливает Transform3D для данного владельца формы.