Rect2
Двумерная ограничивающая рамка, выровненная по осям, с использованием координат с плавающей точкой.
Описание
Встроенный тип Variant Rect2 представляет собой выровненный по осям прямоугольник в 2D-пространстве. Он определяется его position и size, которые являются Vector2. Он часто используется для быстрых тестов на перекрытие (см. intersects()). Хотя сам Rect2 выровнен по осям, его можно объединить с Transform2D для представления повернутого или наклоненного прямоугольника.
Для целочисленных координат используйте Rect2i. 3D-эквивалент Rect2 — AABB.
Примечание: Отрицательные значения для size не поддерживаются. При отрицательном размере большинство методов Rect2 работают неправильно. Используйте abs(), чтобы получить эквивалентный Rect2 с неотрицательным размером.
Примечание: В булевом контексте Rect2 оценивается как false, если и position, и size равны нулю (равны Vector2.ZERO). В противном случае он всегда оценивается как true.
Примечание
Существуют заметные различия при использовании данного API с C#. Подробнее см. API различия C# и GDScript.
Обучающие материалы
Свойства
|
||
|
||
|
Конструкторы
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) |
Описания свойств
Конечная точка. Обычно это нижний правый угол прямоугольника, и эквивалентно position + size. Установка этой точки влияет на 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)
Создает Rect2 по 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() # абсолютный — 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)) # прямоугольник равен Rect2(0, 0, 10, 2)
rect = rect.expand(Vector2(-5, 5)) # прямоугольник равен Rect2(-5, 0, 15, 5)
var rect = new Rect2(0, 0, 5, 2);
rect = rect.Expand(new Vector2(10, 0)); // прямоугольник равен Rect2(0, 0, 10, 2)
rect = rect.Expand(new Vector2(-5, 5)); // прямоугольник равен Rect2(-5, 0, 15, 5)
Возвращает площадь прямоугольника. Это эквивалентно size.x * size.y. См. также has_area().
Возвращает центральную точку прямоугольника. Это то же самое, что position + (size / 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) # а — это Rect2(0, 0, 16, 16)
var b = Rect2(0, 0, 8, 4).grow(2) # b — это Rect2(-2, -2, 12, 8)
var a = new Rect2(4, 4, 8, 8).Grow(4); // а — это Rect2(0, 0, 16, 16)
var b = new Rect2(0, 0, 8, 4).Grow(2); // b — это 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.
var rect1 = Rect2(0, 0, 5, 10)
var rect2 = Rect2(2, 0, 8, 4)
var a = rect1.intersection(rect2) #а — это 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); // а — это 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 по краям. См. также encludes().
Описания оператора
bool operator !=(right: Rect2) 🔗
Возвращает true, если position или size обоих прямоугольников не равны.
Примечание: Из-за ошибок точности с плавающей точкой рассмотрите возможность использования is_equal_approx(), который более надежен.
Rect2 operator *(right: Transform2D) 🔗
Обратно преобразует (умножает) Rect2 на заданную матрицу преобразования Transform2D, при условии, что базис преобразования ортонормален (т. е. поворот/отражение хороши, масштабирование/перекос — нет).
rect * transform эквивалентно transform.inverse() * rect. См. Transform2D.inverse().
Для преобразования с помощью обратного аффинного преобразования (например, с масштабированием) вместо этого можно использовать transform.affine_inverse() * rect. См. Transform2D.affine_inverse().
bool operator ==(right: Rect2) 🔗
Возвращает true, если position и size прямоугольников в точности равны соответственно.
Примечание: Из-за ошибок точности с плавающей точкой рассмотрите возможность использования is_equal_approx(), который более надежен.