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...
Area2D
Успадковує: CollisionObject2D < Node2D < CanvasItem < Node < Object
Область двовимірного простору, яка виявляє, що інші CollisionObject2D входять або виходять з неї.
Опис
Area2D — це область 2D-простору, визначена одним або кількома дочірніми вузлами CollisionShape2D або CollisionPolygon2D. Він визначає, коли інші CollisionObject2D входять або виходять з нього, а також відстежує, які об’єкти зіткнення ще не вийшли з нього (тобто які з них перекривають його).
Цей вузол також може локально змінювати або перевизначати фізичні параметри (гравітацію, демпфування) і направляти аудіо на спеціальні аудіошини.
Примітка: ** Області та тіла, створені за допомогою :ref:`PhysicsServer2D<class_PhysicsServer2D>`, можуть не взаємодіяти з **Area2D належним чином, видавати сигнали або неправильно відстежувати об’єкти.
Посібники
Властивості
|
||
|
||
StringName |
|
|
|
||
|
||
Vector2 |
|
|
|
||
Vector2 |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
get_overlapping_areas() const |
|
Array[Node2D] |
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_entered(body: Node2D) 🔗
Випромінюється, коли отриманий body входить в цю область. body може бути PhysicsBody2D або TileMap. TileMapи виявляються, якщо їхній TileSet має сконфігуровані форми зіткнення. Вимагає, щоб для monitoring було встановлено значення true.
body_exited(body: Node2D) 🔗
Випромінюється, коли отримане 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) 🔗
void set_gravity_direction(value: Vector2)
Vector2 get_gravity_direction()
Вектор гравітації області (не нормалізований).
Якщо true, гравітація обчислюється з точки (встановлюється через gravity_point_center). Дивіться також gravity_space_override.
Vector2 gravity_point_center = Vector2(0, 1) 🔗
void set_gravity_point_center(value: Vector2)
Vector2 get_gravity_point_center()
Якщо гравітація є точкою (див. 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. Хоча Карти Плиток самі не є фізичними тілами, вони реєструють свої плитки з формами зіткнень як віртуальні фізичні тіла.