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.

CollisionObject3D

Успадковує: Node3D < Node < Object

Успадковано від: Area3D, PhysicsBody3D

Абстрактний базовий клас для об'єктів фізики 3D.

Опис

Абстрактний базовий клас для об'єктів фізики 3D. CollisionObject3D може утримувати будь-яку кількість Shape3D для зіткнення. Кожна форма повинна бути призначена * для власника *. Власники форм не мають вузлів і не з'являються в редакторі, але доступні за допомогою коду за допомогою методів shape_owner_*.

Попередження: З неоднорідною шкалою, цей вузол, ймовірно, не буде поводитися як очікується. Консервувати свою вагову вагу на всіх осях і відрегулювати форму зіткнення.

Властивості

int

collision_layer

1

int

collision_mask

1

float

collision_priority

1.0

DisableMode

disable_mode

0

bool

input_capture_on_drag

false

bool

input_ray_pickable

true

Методи

void

_input_event(camera: Camera3D, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) virtual

void

_mouse_enter() virtual

void

_mouse_exit() 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

PackedInt32Array

get_shape_owners()

bool

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)

int

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

int

shape_owner_get_shape_count(owner_id: int) const

int

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, не впливає на фізичне моделювання.


Описи властивостей

int collision_layer = 1 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

Фізичні шари, в яких знаходиться цей CollisionObject3D знаходиться. Об'єкти зіткнення можуть існувати в одному або більше з 32 різних шарів. Дивіться також collision_mask.

Примітка: Об'єкт A може виявити контакт з об'єктом B, тільки якщо об'єкт B знаходиться у будь-якому з шарів, які сканує об'єкт A. Дивіться Колізійні шари та маски у документації для отримання додаткової інформації.


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

Фізичні шари, які сканує CollisionObject3D сканує. Об'єкти зіткнення можуть сканувати один або декілька з 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_capture_on_drag = false 🔗

  • void set_capture_input_on_drag(value: bool)

  • bool get_capture_input_on_drag()

Якщо true, то CollisionObject3D продовжить отримувати вхідні події, оскільки миша перетягується через свої форми.


bool input_ray_pickable = true 🔗

  • void set_ray_pickable(value: bool)

  • bool is_ray_pickable()

Якщо 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 даної форми власника.