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...
Rect2
A 2D вісь вирівнюється з'єднувальна коробка з використанням плавучих координат.
Опис
Вбудований тип Variant Rect2 представляє прямокутник, вирівняний по осях, у двовимірному просторі. Він визначається його position та size, які є Vector2. Він часто використовується для швидких перевірок перекриття (див. intercepts()). Хоча сам Rect2 вирівняний по осях, його можна поєднати з Transform2D для представлення повернутого або скошеного прямокутника.
Для цілочисельних координат використовуйте Rect2i. 3D-еквівалент Rect2 - AABB.
Примітка: Від'ємні значення для розміру елемента не підтримуються. З від'ємним розміром більшість методів Rect2 працюють неправильно. Використовуйте abs(), щоб отримати еквівалентний Rect2 з невід'ємним розміром.
Примітка: У булевому контексті значення Rect2 повертає значення false, якщо обидва значення position та size дорівнюють нулю (дорівнюють Vector2.ZERO). В іншому випадку значення завжди повертає значення true.
Примітка
Існують значні відмінності при використанні цього API із С#. Більше інформації: ref:doc_c_sharp_differences.
Посібники
Властивості
|
||
|
||
|
Конструктори
Rect2() |
|
Методи
abs() const |
|
get_area() const |
|
get_center() const |
|
get_support(direction: Vector2) const |
|
grow_individual(left: float, top: float, right: float, bottom: float) const |
|
has_area() const |
|
intersection(b: Rect2) const |
|
intersects(b: Rect2, include_borders: bool = false) const |
|
is_equal_approx(rect: Rect2) const |
|
is_finite() const |
|
Оператори
operator !=(right: Rect2) |
|
operator *(right: Transform2D) |
|
operator ==(right: Rect2) |
Описи властивостей
Точка закінчення. Це, як правило, нижній кут прямокутника, і еквівалентно позиція + розмір. Налаштування цієї точки впливає на size.
Vector2 position = Vector2(0, 0) 🔗
Точка походження. Зазвичай верхній лівий кут прямокутника.
Vector2 size = Vector2(0, 0) 🔗
Ширина та висота прямокутника, починаючи з position. Встановлення цього значення також впливає на точку end.
Примітка: Рекомендується встановлювати ширину та висоту на невід'ємні значення, оскільки більшість методів у Godot припускають, що position – це верхній лівий кут, а end – нижній правий кут. Щоб отримати еквівалентний прямокутник з невід'ємним розміром, використовуйте abs().
Описи конструкторів
Створює Rect2 з його position і size встановлено на Vector2.ZERO.
Rect2 як копія даної Rect2.
Створює Rect2 з Rect2i.
Rect2 Rect2(position: Vector2, size: Vector2)
Constructs a Rect2 by position і size.
Rect2 Rect2(x: float, y: float, width: float, height: float)
Створює Rect2, встановлюючи його position до (x, y), та його size до (width, height).
Описи методів
Повертає Rect2, еквівалентний цьому прямокутнику, з його шириною та висотою, зміненими на невід’ємні значення, а position — верхнім лівим кутом прямокутника.
var rect = Rect2(25, 25, -100, -50)
var absolute = rect.abs() # absolute це Rect2(-75, -25, 100, 50)
var rect = new Rect2(25, 25, -100, -50);
var absolute = rect.Abs(); // абсолютним є Rect2(-75, -25, 100, 50)
Примітка: Рекомендується використовувати цей метод, коли size має від’ємне значення, оскільки більшість інших методів у Godot припускають, що position — це верхній лівий кут, а end — нижній правий кут.
bool encloses(b: Rect2) const 🔗
Повертає true, якщо цей прямокутник повнено закриває b прямокутник.
Rect2 expand(to: Vector2) const 🔗
Повертає копію цього прямокутника, розгорнуту для вирівнювання країв із заданою точкою to, якщо необхідно.
var rect = Rect2(0, 0, 5, 2)
rect = rect.expand(Vector2(10, 0)) # rect is Rect2(0, 0, 10, 2)
rect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 15, 5)
var rect = new Rect2(0, 0, 5, 2);
rect = rect.Expand(new Vector2(10, 0)); // rect is Rect2(0, 0, 10, 2)
rect = rect.Expand(new Vector2(-5, 5)); // rect is Rect2(-5, 0, 15, 5)
Повертає область прямокутника. size.x * розмір.y. Дивитися також has_area().
Повертає центральну точку прямокутника. Це так само, як позиція + (розмір / 2.0).
Vector2 get_support(direction: Vector2) const 🔗
Повертає позицію вершини цієї обмежувальної рамки, яка знаходиться найдальше в заданому напрямку. Ця точка широко відома як опорна точка в алгоритмах виявлення зіткнень.
Rect2 grow(amount: float) const 🔗
Повертає копію цього прямокутника, розширену з усіх боків на задане значення amount. Від'ємне значення amount натомість зменшує прямокутник. Див. також grow_individual() та grow_side().
var a = Rect2(4, 4, 8, 8).grow(4) # a is Rect2(0, 0, 16, 16)
var b = Rect2(0, 0, 8, 4).grow(2) # b is Rect2(-2, -2, 12, 8)
var a = new Rect2(4, 4, 8, 8).Grow(4); // a is Rect2(0, 0, 16, 16)
var b = new Rect2(0, 0, 8, 4).Grow(2); // b is Rect2(-2, -2, 12, 8)
Rect2 grow_individual(left: float, top: float, right: float, bottom: float) const 🔗
Повертає копію цього прямокутника з його сторонами left, top, right та bottom, подовженими на задані значення. Від'ємні значення натомість зменшують сторони. Див. також grow() та grow_side().
Rect2 grow_side(side: int, amount: float) const 🔗
Повертає копію цього прямокутника з його side, розширеною на задане значення amount (див. константи Side). Від'ємне значення amount натомість зменшує прямокутник. Див. також grow() та grow_individual().
Повертає true, якщо цей прямокутник має позитивну ширину і висоту. Дивись також get_area().
bool has_point(point: Vector2) const 🔗
Повертає true, якщо прямокутник містить задану точку point. За домовленістю, точки на правому та нижньому краях не враховуються.
Примітка: Цей метод ненадійний для Rect2 з від’ємним size. Спочатку використовуйте abs(), щоб отримати коректний прямокутник.
Rect2 intersection(b: Rect2) const 🔗
Повертає перетин між цим прямокутником і b. Якщо прямокутники не перетинаються, повертає порожній Rect2.
змінна rect1 = Rect2(0, 0, 5, 10)
змінна rect2 = Rect2(2, 0, 8, 4)
var a = rect1.intersection(rect2) # a is Rect2(2, 0, 3, 4)
var rect1 = new Rect2(0, 0, 5, 10);
var rect2 = new Rect2(2, 0, 8, 4);
var a = rect1.Intersection(rect2); // a є Rect2(2, 0, 3, 4)
Примітка: Якщо вам потрібно лише знати, чи накладаються два прямокутники, натомість використовуйте intersects().
bool intersects(b: Rect2, include_borders: bool = false) const 🔗
Повертає значення true, якщо цей прямокутник перетинається з прямокутником b. Краї обох прямокутників виключаються, якщо тільки значення include_borders не дорівнює true.
bool is_equal_approx(rect: Rect2) const 🔗
Повертає true, якщо цей прямокутник та rect приблизно рівні, викликаючи Vector2.is_equal_approx() для position та size.
Повертає true, якщо значення цього прямокутника скінченні, викликаючи Vector2.is_finite() для position та size.
Повертає Rect2, який оточує як цей прямокутник, так і b по краях. Див. також enclosures().
Описи операторів
bool operator !=(right: Rect2) 🔗
Повертаємо true, якщо position або size обох прямокутників не дорівнює.
Примітка: У зв'язку з похибками з плаваючою точкою, розглянемо використання is_equal_approx() замість того, яка є більш надійним.
Rect2 operator *(right: Transform2D) 🔗
Неперевершено трансформується (мультати) Rect2 заданим Transform2D матрицею перетворення, під припущенням, що трансформаційна основа є ортонормальним (тобто обертання / рефлекція є дрібним, масштабування / шавлія не).
rect * трансформатор еквівалент transform.inverse() * ct. Transform2D.inverse().
Для перетворення інверсом афінової трансформації (наприклад, з масштабуванням) transform.affine_inverse() * ct може використовуватися замість. Transform2D.affine_inverse().
bool operator ==(right: Rect2) 🔗
Повертає true, якщо обидва значення прямокутників, position та size, абсолютно рівні відповідно.
Примітка: Через помилки точності чисел з плаваючою комою, розгляньте можливість використання is_equal_approx(), що є надійнішим.