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.
Опис
Абстрактний базовий клас для об'єктів фізики 3D. CollisionObject3D може утримувати будь-яку кількість Shape3D для зіткнення. Кожна форма повинна бути призначена * для власника *. Власники форм не мають вузлів і не з'являються в редакторі, але доступні за допомогою коду за допомогою методів shape_owner_*.
Попередження: З неоднорідною шкалою, цей вузол, ймовірно, не буде поводитися як очікується. Консервувати свою вагову вагу на всіх осях і відрегулювати форму зіткнення.
Властивості
|
||
|
||
|
||
|
||
|
||
|
Методи
void |
_input_event(camera: Camera3D, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) virtual |
void |
_mouse_enter() virtual |
void |
_mouse_exit() virtual |
create_shape_owner(owner: Object) |
|
get_collision_layer_value(layer_number: int) const |
|
get_collision_mask_value(layer_number: int) const |
|
RID |
get_rid() const |
PackedInt32Array |
|
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) |
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 |
shape_owner_get_shape_count(owner_id: int) const |
|
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) |
Сигнали
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_layer, враховуючи layer_number між 1 і 32.
RID get_rid() const 🔗
Повернення об'єкта RID.
PackedInt32Array get_shape_owners() 🔗
Повертаємо вашу увагу на те, що owner_id ідентифікатори. Ви можете використовувати ці ids в інших методах, які приймають 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 даної форми власника.