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(), що є надійнішим.