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...
2D системи координат і 2D перетворення,'
Вступ
Це детальний огляд доступних двовимірних систем координат і вбудованих двовимірних перетворень. Основні поняття описані в Перетворення вікна перегляду та полотна.
Transform2D – це матриці, які перетворюють координати з однієї системи координат в іншу. Щоб використовувати їх, корисно знати, які системи координат доступні в Godot. Для глибшого розуміння, посібник Матриці та перетворення пропонує уявлення про базову функціональність.
2D системи координат Godot
На наступному малюнку наведено огляд двовимірних систем координат Godot та доступних перетворень вузлів, функцій перетворення та пов’язаних із системою координат функцій. Ліворуч — екран диспетчера вікон ОС, праворуч — CanvasItems. З міркувань простоти ця графіка не включає SubViewport, SubViewportContainer, ParallaxLayer та ParallaxBackground усі які також впливають на трансформації.
Графіка базується на дереві вузлів наступного вигляду: Root Window (embed Windows) ⇒ Window (don't embed Windows) ⇒ CanvasLayer ⇒ CanvasItem ⇒ CanvasItem ⇒ CanvasItem. Можливі й складніші комбінації, такі як глибоко вкладені вікна та підпрозорі вікна, проте цей приклад має на меті надати загальний огляд методології.
Натисніть на зображення, щоб збільшити.
- Координати предметів
Це локальна система координат CanvasItem.
- Координати батьківського елемента
Це локальна система координат батьківського CanvasItem. Розміщуючи CanvasItems у Canvas, вони зазвичай успадковують перетворення своїх батьківських CanvasItems. Винятком є CanvasItems.top_level.
- Координати полотна
Як згадувалося в попередньому посібнику Полотняні шари, існує два типи полотен (полотно Viewport і полотно CanvasLayer), і обидва мають систему координат полотна. Їх також називають світовими координатами. Viewport може містити кілька Canvases з різними системами координат.
- Координати Viewport
Це система координат Viewport.
- Координати камери
Це використовується лише внутрішньо для таких функцій, як проекція променів 3D-камери.
- Координати вбудовування / Координати екрана
Кожне Viewport (Window або SubViewport) у дереві сцени вбудовано або в інший вузол, або в диспетчер вікон ОС. Початок цієї системи координат ідентичний верхньому лівому куту Window або SubViewport, а її масштаб відповідає масштабу програми для вбудовування або диспетчера вікон ОС.
Якщо вбудовувачем є диспетчер вікон ОС, вони також називаються екранними координатами.
- Абсолютні координати вбудованого пристрою / Абсолютні координати екрана
Початком цієї системи координат є верхній лівий кут вузла вбудовування або екран диспетчера вікон ОС. Його масштаб відповідає масштабу вбудованого пристрою або диспетчера вікон ОС.
Якщо вбудовувачем є диспетчер вікон ОС, вони також називаються абсолютними екранними координатами.
Перетворення вузла
Кожен із згаданих вузлів має одне або більше перетворень, асоційованих з ними, і комбінація цих вузлів виводить перетворення між різними системами координат. За кількома винятками, перетвореннями є Transform2D, і в наступному списку показано деталі та ефекти кожного з них.
- Трансформація CanvasItem
CanvasItems є або Control-вузлами, або Node2D-вузлами.
Для вузлів Control це перетворення складається з position відносно батьківського походження та scale і rotation навколо pivot point.
Для вузлів Node2D transform складається з position, rotation, scale та skew.
Перетворення впливає на сам елемент і зазвичай також на дочірні CanvasItems, а у випадку SubViewportContainer воно впливає на SubViewport, що міститься.
- Трансформація CanvasLayer
CanvasLayer transform впливає на всі CanvasItems у CanvasLayer. Це не впливає на інші CanvasLayers або Windows у його Viewport.
- CanvasLayer слідкує за трансформацією вікна перегляду
Follow viewport transform — це автоматично обчислене перетворення, яке базується на Viewport's canvas transform і CanvasLayer's follow viewport scale і може використовуватися, якщо enabled, щоб досягти ефекту псевдо-3D. Він впливає на ті самі дочірні вузли, що й перетворення CanvasLayer.
- Перетворення полотна вікна перегляду
canvas transform впливає на всі CanvasItems у полотні за замовчуванням Viewport's. Це також впливає на CanvasLayers, для яких увімкнуто перетворення вікна перегляду. Viewport's active Camera2D працює, змінюючи це перетворення. Це не впливає на вбудовану Windows Viewport's.
- Глобальне перетворення полотна Viewport
Viewports також мають global canvas transform. Це головне перетворення, яке впливає на всі окремі перетворення Canvas Layer і вбудовані Window. Це в основному використовується в Godot's CanvasItem Editor.
- Перетворення розтягування вікна перегляду
Зрештою, Viewports мають stretch transform, який використовується під час зміни розміру або розтягування області перегляду. Це перетворення використовується для Windows, як описано в Кілька дозволів, але також може бути встановлене вручну для SubViewports за допомогою size та size_2d_override. Його translation, rotation та skew є значеннями за замовчуванням, і воно може мати лише scale, що не є значеннями за замовчуванням.
- Трансформація вікна
Щоб масштабувати та позиціонувати вміст Window, як описано в Кілька дозволів, кожне Window містить перетворення вікна. Він, наприклад, відповідає за чорні смуги з боків вікна, щоб вікно перегляду відображалося з фіксованим співвідношенням сторін.
- Положення вікна
Кожне вікно також має position для опису його положення всередині свого вбудованого пристрою. Засіб для вбудовування може бути іншим Viewport або диспетчером вікон ОС.
- Стискаюче перетворення SubViewportContainer
stretch разом із stretch_shrink оголошують для SubViewportContainer, якщо і на який цілий коефіцієнт SubViewport має масштабуватися порівняно з розміром контейнера.