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...
Camera2D
Успадковує: Node2D < CanvasItem < Node < Object
Вузол камери для 2D сцен.
Опис
Вузол камери для 2D-сцен. Він змушує екран (поточний шар) прокручуватися, слідуючи за цим вузлом. Це спрощує (і пришвидшує) програмування сцен з можливістю прокручування, ніж ручна зміна положення вузлів на основі CanvasItem.
Камери реєструються в найближчому вузлі Viewport (під час висхідного розташування по дереву). Тільки одна камера може бути активною на одне вікно перегляду. Якщо вікно перегляду недоступне під час висхідного розташування по дереву, камера зареєструється в глобальному вікні перегляду.
Цей вузол призначений для простого помічника для швидкого запуску, але може знадобитися більше функціональності, щоб змінити спосіб роботи камери. Щоб створити власний вузол камери, успадкуйте його від Node2D та змініть перетворення полотна, встановивши Viewport.canvas_transform у Viewport (ви можете отримати поточне Viewport за допомогою Node.get_viewport()).
Зверніть увагу, що Node2D.global_position вузла Camera2D не відображає фактичне положення екрана, яке може відрізнятися через застосоване згладжування або обмеження. Ви можете скористатися методом get_screen_center_position(), щоб отримати реальне положення. Те саме стосується вузла Node2D.global_rotation, який може відрізнятися через застосоване згладжування обертання. Ви можете скористатися методом get_screen_rotation(), щоб отримати поточне обертання екрана.
Посібники
Властивості
|
||
Node |
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Vector2 |
|
|
|
||
|
||
|
||
|
||
|
||
Vector2 |
|
Методи
void |
align() |
void |
|
get_drag_margin(margin: Side) const |
|
Vector2 |
get_screen_center_position() const |
get_screen_rotation() const |
|
Vector2 |
get_target_position() const |
is_current() const |
|
void |
|
void |
|
void |
set_drag_margin(margin: Side, drag_margin: float) |
void |
Переліки
enum AnchorMode: 🔗
AnchorMode ANCHOR_MODE_FIXED_TOP_LEFT = 0
Положення камери фіксується таким чином, що верхній лівий кут завжди знаходиться в початковій точці.
AnchorMode ANCHOR_MODE_DRAG_CENTER = 1
Розташування камери враховує вертикальне/горизонтальне зміщення та розмір екрана.
enum Camera2DProcessCallback: 🔗
Camera2DProcessCallback CAMERA2D_PROCESS_PHYSICS = 0
Камера оновлюється під час кадрів фізики (див. Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).
Camera2DProcessCallback CAMERA2D_PROCESS_IDLE = 1
Камера оновлюється під час кадрів процесу (див. Node.NOTIFICATION_INTERNAL_PROCESS).
Описи властивостей
AnchorMode anchor_mode = 1 🔗
void set_anchor_mode(value: AnchorMode)
AnchorMode get_anchor_mode()
Точка прив'язки Camera2D.
Node custom_viewport 🔗
void set_custom_viewport(value: Node)
Node get_custom_viewport()
Спеціальний вузол Viewport, приєднаний до Camera2D. Якщо null або не є Viewport, натомість використовується вікно перегляду за замовчуванням.
float drag_bottom_margin = 0.2 🔗
Нижнє поле, необхідне для перетягування камери. Значення 1 змушує камеру рухатися лише тоді, коли вона досягає нижнього краю екрана.
bool drag_horizontal_enabled = false 🔗
Якщо true, камера рухається лише тоді, коли досягає горизонтальних (лівого та правого) полів перетягування. Якщо false, камера рухається горизонтально незалежно від полів.
float drag_horizontal_offset = 0.0 🔗
Відносне горизонтальне зміщення перетягування камери між правим (-1) і лівим (1) полями перетягування.
Примітка: Використовується для встановлення початкового горизонтального зсуву перетягування; визначити поточне зміщення; або примусове поточне зміщення. Він не оновлюється автоматично, якщо drag_horizontal_enabled має значення true або поля перетягування змінюються.
float drag_left_margin = 0.2 🔗
Ліве поле, необхідне для перетягування камери. Значення 1 змушує камеру рухатися лише тоді, коли вона досягає лівого краю екрана.
float drag_right_margin = 0.2 🔗
Праве поле, необхідне для перетягування камери. Значення 1 змушує камеру рухатися лише тоді, коли вона досягає правого краю екрана.
Верхнє поле, необхідне для перетягування камери. Значення 1 змушує камеру рухатися лише тоді, коли вона досягає верхнього краю екрана.
bool drag_vertical_enabled = false 🔗
Якщо true, камера рухається лише тоді, коли досягає вертикальних (верхнього та нижнього) полів перетягування. Якщо false, камера рухається вертикально незалежно від полів опору.
float drag_vertical_offset = 0.0 🔗
Відносне вертикальне зміщення перетягування камери між нижнім (-1) і верхнім (1) полями перетягування.
Примітка: Використовується для встановлення початкового вертикального зсуву перетягування; визначити поточне зміщення; або примусове поточне зміщення. Він не оновлюється автоматично, якщо drag_vertical_enabled має значення true або поля перетягування змінюються.
bool editor_draw_drag_margin = false 🔗
Якщо true, малює прямокутник поля перетягування камери в редакторі.
bool editor_draw_limits = false 🔗
Якщо true, малює прямокутник обмежень камери в редакторі.
bool editor_draw_screen = true 🔗
Якщо true, малює прямокутник екрана камери в редакторі.
Контролює, чи може камера бути активною чи ні. Якщо true, Camera2D стане основною камерою, коли вона ввійде в дерево сцени, і наразі немає жодної активної камери (див. Viewport.get_camera_2d()).
Коли камера наразі активна, а enabled встановлено на
false, наступний увімкнений Camera2D у дереві сцен стане активним.
Якщо true, на візуалізований вигляд камери не впливають його Node2D.rotation і Node2D.global_rotation.
Нижня межа прокручування в пікселях. Камера припиняє рух, коли досягає цього значення, але offset може перевищити межу огляду.
Якщо значення true, обмеження будуть увімкнені. Вимкнення цього значення дозволить камері фокусуватися будь-де, коли чотири властивості limit_* не працюватимуть.
Ліміт прокручування вліво в пікселях. Камера припиняє рух, коли досягає цього значення, але offset може перевищити межу огляду.
Ліміт прокручування вправо в пікселях. Камера припиняє рух, коли досягає цього значення, але offset може перевищити межу огляду.
Якщо true, камера плавно зупиняється, коли досягає своїх меж.
Ця властивість не діє, якщо position_smoothing_enabled має значення false.
Примітка: Щоб негайно оновити положення камери, щоб воно було в межах без згладжування, навіть якщо це налаштування ввімкнено, викликайте reset_smoothing().
Верхня межа прокручування в пікселях. Камера припиняє рух, коли досягає цього значення, але offset може перевищити межу огляду.
Vector2 offset = Vector2(0, 0) 🔗
void set_offset(value: Vector2)
Vector2 get_offset()
Відносне зміщення камери. Корисно для огляду або анімації тремтіння камери. Зміщена камера може перевищувати обмеження, визначені в limit_top, limit_bottom, limit_left і limit_right.
bool position_smoothing_enabled = false 🔗
Якщо true, вид камери плавно переміщується до цільової позиції зі position_smoothing_speed.
float position_smoothing_speed = 5.0 🔗
Швидкість ефекту згладжування камери в пікселях на секунду, коли position_smoothing_enabled має значення true.
Camera2DProcessCallback process_callback = 1 🔗
void set_process_callback(value: Camera2DProcessCallback)
Camera2DProcessCallback get_process_callback()
Зворотній виклик процесу камери.
bool rotation_smoothing_enabled = false 🔗
Якщо true, огляд камери плавно повертається за допомогою асимптотичного згладжування, щоб узгодити його цільове обертання на rotation_smoothing_speed.
Примітка: Ця властивість не діє, якщо ignore_rotation має значення true.
float rotation_smoothing_speed = 5.0 🔗
Кутова асимптотична швидкість ефекту згладжування обертання камери, коли rotation_smoothing_enabled має значення true.
Vector2 zoom = Vector2(1, 1) 🔗
void set_zoom(value: Vector2)
Vector2 get_zoom()
Масштабування камери. Вищі значення призводять до більшого збільшення масштабу. Наприклад, масштабування Vector2(2.0, 2.0) буде вдвічі збільшене на кожній осі (огляд охоплює площу в чотири рази меншу). Натомість, масштабування Vector2(0.5, 0.5) буде вдвічі менше на кожній осі (огляд охоплює площу в чотири рази більшу). Компоненти X та Y, як правило, завжди повинні бути встановлені на однакове значення, якщо ви не хочете розтягнути огляд камери.
Примітка: FontFile.oversampling не враховує масштабування Camera2D. Це означає, що збільшення/зменшення масштабу призведе до розмиття або пікселізації растрових шрифтів та растеризованих (не MSDF) динамічних шрифтів, якщо шрифт не є частиною CanvasLayer, що змушує його ігнорувати масштабування камери. Щоб забезпечити чіткість тексту незалежно від масштабування, ви можете ввімкнути рендеринг шрифтів MSDF, увімкнувши ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field (стосується лише шрифту проекту за замовчуванням) або ввімкнувши Поле відстані зі знаком багатоканальності у параметрах імпорту DynamicFont для користувацьких шрифтів. Для системних шрифтів SystemFont.multichannel_signed_distance_field можна ввімкнути в інспекторі.
Описи методів
void align() 🔗
Вирівнює камеру відносно відстежуваного вузла.
Примітка: Виклик force_update_scroll() після цього методу не є обов'язковим.
void force_update_scroll() 🔗
Змушує камеру негайно оновити прокручування.
float get_drag_margin(margin: Side) const 🔗
Повертає вказане поле Side. Див. також drag_bottom_margin, drag_top_margin, drag_left_margin і drag_right_margin.
int get_limit(margin: Side) const 🔗
Повертає ліміт камери для вказаної Side. Див. також limit_bottom, limit_top, limit_left, і limit_right.
Vector2 get_screen_center_position() const 🔗
Повертає центр екрана з точки зору цієї камери в глобальних координатах.
Примітка: Точне цільове положення камери може відрізнятися. Перегляньте get_target_position().
float get_screen_rotation() const 🔗
Повертає поточне обертання екрана з точки зору цієї камери.
Примітка: Обертання екрана може відрізнятися від Node2D.global_rotation, якщо камера обертається плавно завдяки rotation_smoothing_enabled.
Vector2 get_target_position() const 🔗
Повертає цільове положення камери в глобальних координатах.
Примітка: Повернене значення не те саме, що Node2D.global_position, оскільки на нього впливають властивості перетягування. Це також не те саме, що поточна позиція, якщо position_smoothing_enabled має значення true (див. get_screen_center_position()).
true, якщо це Camera2D є активною камерою (див. Viewport.get_camera_2d()).
void make_current() 🔗
Примусово робить цей Camera2D поточним активним. enabled має бути true.
void reset_smoothing() 🔗
Негайно встановлює положення камери до її поточного призначення згладжування.
Цей метод не діє, якщо position_smoothing_enabled має значення false.
void set_drag_margin(margin: Side, drag_margin: float) 🔗
Встановлює вказане поле Side. Див. також drag_bottom_margin, drag_top_margin, drag_left_margin і drag_right_margin.
void set_limit(margin: Side, limit: int) 🔗
Встановлює обмеження камери для вказаної Side. Див. також limit_bottom, limit_top, limit_left, і limit_right.