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...
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 для данного владельца формы.