Area2D
Успадковує: CollisionObject2D < Node2D < CanvasItem < Node < Object
Область двовимірного простору, яка виявляє, що інші CollisionObject2D входять або виходять з неї.
Опис
Area2D — це область 2D-простору, визначена одним або кількома дочірніми вузлами CollisionShape2D або CollisionPolygon2D. Він визначає, коли інші CollisionObject2D входять або виходять з нього, а також відстежує, які об’єкти зіткнення ще не вийшли з нього (тобто які з них перекривають його).
Цей вузол також може локально змінювати або перевизначати фізичні параметри (гравітацію, демпфування) і направляти аудіо на спеціальні аудіошини.
Примітка: ** Області та тіла, створені за допомогою :ref:`PhysicsServer2D<class_PhysicsServer2D>`, можуть не взаємодіяти з **Area2D належним чином, видавати сигнали або неправильно відстежувати об’єкти.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
get_overlapping_areas() const |
|
get_overlapping_bodies() const |
|
has_overlapping_areas() const |
|
has_overlapping_bodies() const |
|
overlaps_area(area: Node) const |
|
overlaps_body(body: Node) const |
Сигнали
Випромінюється, коли отримана area потрапляє в цю область. Потребує, щоб monitoring було встановлено на true.
Випромінюється, коли отримана area виходить з цієї області. Потребує, щоб monitoring було встановлено на true.
area_shape_entered(area_rid: RID, area: Area2D, area_shape_index: int, local_shape_index: int) 🔗
Видається, коли Shape2D отриманої area входить у форму цієї області. Для параметра monitoring потрібно встановити значення true.
local_shape_index і area_shape_index містять індекси взаємодіючих фігур з цієї та іншої області відповідно. area_rid містить RID іншої області. Ці значення можна використовувати з PhysicsServer2D.
Приклад: Отримайте вузол CollisionShape2D з індексу форми:
var other_shape_owner = area.shape_find_owner(area_shape_index)
var other_shape_node = area.shape_owner_get_owner(other_shape_owner)
var local_shape_owner = shape_find_owner(local_shape_index)
var local_shape_node = shape_owner_get_owner(local_shape_owner)
area_shape_exited(area_rid: RID, area: Area2D, area_shape_index: int, local_shape_index: int) 🔗
Випромінюється, коли Shape2D отриманої area виходить за межі форми цієї області. Потребує, щоб monitoring було встановлено на true.
Дивіться також area_shape_shape_entered.
Випромінюється, коли отриманий body входить в цю область. body може бути PhysicsBody2D або TileMap. TileMapи виявляються, якщо їхній TileSet має сконфігуровані форми зіткнення. Вимагає, щоб для monitoring було встановлено значення true.
Випромінюється, коли отримане body виходить з цієї області. body може бути PhysicsBody2D або TileMap. TileMapи виявляються, якщо їхній TileSet має сконфігуровані форми зіткнення. Вимагає, щоб для monitoring було встановлено значення true.
body_shape_entered(body_rid: RID, body: Node2D, body_shape_index: int, local_shape_index: int) 🔗
Випускається, коли Shape2D отриманого body входить у форму цієї області. body може бути PhysicsBody2D або TileMap. TileMap виявляються, якщо для їх TileSet налаштовано форми зіткнення. Для параметра monitoring потрібно встановити значення true.
local_shape_index і body_shape_index містять індекси взаємодіючих форм із цієї області та взаємодіючого тіла відповідно. body_rid містить RID тіла. Ці значення можна використовувати з PhysicsServer2D.
Приклад: Отримайте вузол CollisionShape2D з індексу форми:
var body_shape_owner = body.shape_find_owner(body_shape_index)
var body_shape_node = body.shape_owner_get_owner(body_shape_owner)
var local_shape_owner = shape_find_owner(local_shape_index)
var local_shape_node = shape_owner_get_owner(local_shape_owner)
body_shape_exited(body_rid: RID, body: Node2D, body_shape_index: int, local_shape_index: int) 🔗
Випромінюється, коли Shape2D отриманого body виходить з форми цієї області. body може бути PhysicsBody2D або TileMap. TileMapи визначаються, якщо їх TileSet має налаштовані форми зіткнення. Потребує, щоб для monitoring було встановлено значення true.
Дивіться також body_shape_entered.
Переліки
enum SpaceOverride: 🔗
SpaceOverride SPACE_OVERRIDE_DISABLED = 0
Ця область не впливає на гравітацію/демпфування.
SpaceOverride SPACE_OVERRIDE_COMBINE = 1
Ця область додає свої значення гравітації/демпфування до всього, що було розраховано до цього часу (у порядку priority).
SpaceOverride SPACE_OVERRIDE_COMBINE_REPLACE = 2
Ця область додає свої значення гравітації/демпфування до всього, що було розраховано до цього часу (у порядку priority), ігноруючи всі області з нижчим пріоритетом.
SpaceOverride SPACE_OVERRIDE_REPLACE = 3
Ця область замінює будь-яку гравітацію/демпфування, навіть за замовчуванням, ігноруючи всі області з нижчим пріоритетом.
SpaceOverride SPACE_OVERRIDE_REPLACE_COMBINE = 4
Ця область замінює будь-яку гравітацію/демпфування, обчислену до цього часу (у порядку priority), але продовжує розраховувати решту областей.
Описи властивостей
Швидкість, з якою об'єкти перестають обертатися в цій області. Являє собою кутову швидкість, втрачену за секунду.
Дивіться ProjectSettings.physics/2d/default_angular_damp для більш детальної інформації про демпфування.
SpaceOverride angular_damp_space_override = 0 🔗
void set_angular_damp_space_override_mode(value: SpaceOverride)
SpaceOverride get_angular_damp_space_override_mode()
Режим перевизначення для розрахунків кутового демпфування в цій області.
StringName audio_bus_name = &"Master" 🔗
void set_audio_bus_name(value: StringName)
StringName get_audio_bus_name()
Назва звукової шини області.
bool audio_bus_override = false 🔗
Якщо true, звукова шина області замінює звукову шину за замовчуванням.
Інтенсивність гравітації області (у пікселях на секунду в квадраті). Це значення множить напрямок гравітації. Корисно для зміни сили гравітації без зміни її напрямку.
Vector2 gravity_direction = Vector2(0, 1) 🔗
Вектор гравітації області (не нормалізований).
Якщо true, гравітація обчислюється з точки (встановлюється через gravity_point_center). Дивіться також gravity_space_override.
Vector2 gravity_point_center = Vector2(0, 1) 🔗
Якщо гравітація є точкою (див. gravity_point), то це буде точка притягання.
float gravity_point_unit_distance = 0.0 🔗
Відстань, на якій сила гравітації дорівнює gravity. Наприклад, на планеті радіусом 100 пікселів з поверхневою гравітацією 4.0 px/s², встановіть gravity на 4.0 і одиницю відстані на 100.0. Гравітація спадатиме за законом оберненого квадрата, тому у прикладі на відстані 200 пікселів від центру гравітація буде 1.0 px/s² (вдвічі більша відстань, 1/4 гравітації), на відстані 50 пікселів - 16.0 px/s² (вдвічі менша відстань, 4x гравітації), і так далі.
Вищесказане справедливо лише тоді, коли одиниця відстані є додатним числом. Якщо цей параметр встановлено на 0.0, гравітація буде постійною незалежно від відстані.
SpaceOverride gravity_space_override = 0 🔗
void set_gravity_space_override_mode(value: SpaceOverride)
SpaceOverride get_gravity_space_override_mode()
Режим перевизначення для розрахунків сили тяжіння в цій області.
Швидкість, з якою об'єкти перестають рухатися в цій області. Являє собою лінійну швидкість, втрачену за секунду.
Дивіться ProjectSettings.physics/2d/default_linear_damp для більш детальної інформації про демпфування.
SpaceOverride linear_damp_space_override = 0 🔗
void set_linear_damp_space_override_mode(value: SpaceOverride)
SpaceOverride get_linear_damp_space_override_mode()
Режим перевизначення для розрахунків лінійного демпфування в цій області.
Якщо true, інші області моніторингу можуть виявити цю ділянку.
Якщо true, область виявляє тіла або області, які входять і виходять з неї.
Пріоритет району. Першочергові ділянки обробляються першими. Фізика World2D завжди обробляється останньою, після всіх областей.
Описи методів
Array[Area2D] get_overlapping_areas() const 🔗
Повертає список Area2D(й), що перетинаються. Для виявлення, CollisionObject2D.collision_layer області, що перетинається, має бути частиною CollisionObject2D.collision_mask цієї області.
З міркувань продуктивності (всі зіткнення обробляються одночасно) цей список змінюється один раз під час фізичного кроку, а не одразу після переміщення об'єктів. Подумайте про використання сигналів замість цього.
Array[Node2D] get_overlapping_bodies() const 🔗
Повертає список тіл PhysicsBody2D та TileMap, що перетинаються. Для виявлення, CollisionObject2D.collision_layer тіла, що перетинається, має бути частиною CollisionObject2D.collision_mask цієї області.
З міркувань продуктивності (всі зіткнення обробляються одночасно) цей список змінюється один раз під час фізичного кроку, а не одразу після переміщення об'єктів. Подумайте про використання сигналів замість цього.
bool has_overlapping_areas() const 🔗
Повертає true, якщо перетинаються будь-які Area2Dі, інакше повертає false. Для виявлення, CollisionObject2D.collision_layer області, що перетинається, має бути частиною CollisionObject2D.collision_mask цієї області.
З міркувань продуктивності (всі зіткнення обробляються одночасно) список областей, що перетинаються, змінюється один раз під час фізичного кроку, а не одразу після переміщення об'єктів. Подумайте про використання сигналів замість цього.
bool has_overlapping_bodies() const 🔗
Повертає true, якщо перетинаються будь-які PhysicsBody2D або TileMap, інакше повертає false. Для виявлення, CollisionObject2D.collision_layer тіла, що перетинається, має бути частиною CollisionObject2D.collision_mask цієї області.
З міркувань продуктивності (всі зіткнення обробляються одночасно) список тіл, що перетинаються, змінюється один раз під час фізичного кроку, а не одразу після переміщення об'єктів. Подумайте про використання сигналів замість цього.
bool overlaps_area(area: Node) const 🔗
Повертає true, якщо задана Area2D перетинає або накладається на цю Area2D, інакше false.
Примітка: Цей тест не виконується одразу після переміщення об'єктів. Для підвищення продуктивності список перетинів оновлюється один раз за кадр і перед кроком фізики. Подумайте про використання сигналів замість цього.
bool overlaps_body(body: Node) const 🔗
Повертає true, якщо задане фізичне тіло перетинає або накладається на цю Area2D, інакше false.
Примітка: Цей тест не виконується одразу після переміщення об'єктів. Для продуктивності список перетинів оновлюється один раз на кадр і перед кроком фізики. Розгляньте можливість використання сигналів замість цього.
Аргумент body може бути екземпляром PhysicsBody2D або TileMap. Хоча Карти Плиток самі не є фізичними тілами, вони реєструють свої плитки з формами зіткнень як віртуальні фізичні тіла.