Rect2i
Двумерная ограничивающая рамка, выровненная по осям, с использованием целочисленных координат.
Описание
Встроенный тип Variant Rect2i представляет собой выровненный по осям прямоугольник в двумерном пространстве с использованием целочисленных координат. Он определяется его position и size, которые являются Vector2i. Поскольку он не вращается, он часто используется для быстрых тестов на перекрытие (см. intersects()).
Для координат с плавающей точкой см. Rect2.
Примечание: Отрицательные значения для size не поддерживаются. При отрицательном размере большинство методов Rect2i работают некорректно. Используйте abs(), чтобы получить эквивалентный Rect2i с неотрицательным размером.
Примечание: В булевом контексте Rect2i оценивается как false, если и position, и size равны нулю (равно Vector2i.ZERO). В противном случае всегда принимается значение true.
Примечание
Существуют заметные различия при использовании данного API с C#. Подробнее см. API различия C# и GDScript.
Обучающие материалы
Свойства
|
||
|
||
|
Конструкторы
Rect2i() |
|
Методы
abs() const |
|
get_area() const |
|
get_center() const |
|
grow_individual(left: int, top: int, right: int, bottom: int) const |
|
has_area() const |
|
intersection(b: Rect2i) const |
|
intersects(b: Rect2i) const |
|
Операторы
operator !=(right: Rect2i) |
|
operator ==(right: Rect2i) |
Описания свойств
Vector2i end = Vector2i(0, 0) 🔗
Конечная точка. Обычно это нижний правый угол прямоугольника, и эквивалентно position + size. Установка этой точки влияет на size.
Vector2i position = Vector2i(0, 0) 🔗
Начальная точка. Обычно это верхний левый угол прямоугольника.
Vector2i size = Vector2i(0, 0) 🔗
Ширина и высота прямоугольника, начиная с position. Установка этого значения также влияет на точку end.
Примечание: Рекомендуется устанавливать ширину и высоту на неотрицательные значения, так как большинство методов в Godot предполагают, что position — это верхний левый угол, а end — это нижний правый угол. Чтобы получить эквивалентный прямоугольник с неотрицательным размером, используйте abs().
Описания конструктора
Создает Rect2i с его position и size, установленными на Vector2i.ZERO.
Создает Rect2i как копию заданного Rect2i.
Создает Rect2i из Rect2. Координаты с плавающей точкой усекаются.
Rect2i Rect2i(position: Vector2i, size: Vector2i)
Создает Rect2i по position и size.
Rect2i Rect2i(x: int, y: int, width: int, height: int)
Создает Rect2i, устанавливая его position на (x, y), а его size на (width, height).
Описания метода
Возвращает Rect2i, эквивалентный данному прямоугольнику, с измененной шириной и высотой, которые стали неотрицательными значениями, и с position, являющейся верхним левым углом прямоугольника.
var rect = Rect2i(25, 25, -100, -50)
var absolute = rect.abs() # абсолютный — Rect2i(-75, -25, 100, 50)
var rect = new Rect2I(25, 25, -100, -50);
var absolute = rect.Abs(); // абсолютный — Rect2i(-75, -25, 100, 50)
Примечание: Рекомендуется использовать этот метод, когда size отрицательный, так как большинство других методов в Godot предполагают, что position — это верхний левый угол, а end — нижний правый угол.
bool encloses(b: Rect2i) const 🔗
Возвращает true, если этот Rect2i полностью охватывает другой.
Rect2i expand(to: Vector2i) const 🔗
Возвращает копию этого прямоугольника, расширенную для выравнивания краев с заданной точкой to, если это необходимо.
var rect = Rect2i(0, 0, 5, 2)
rect = rect.expand(Vector2i(10, 0)) # прямоугольник равен Rect2i(0, 0, 10, 2)
rect = rect.expand(Vector2i(-5, 5)) # прямоугольник равен Rect2i(-5, 0, 15, 5)
var rect = new Rect2I(0, 0, 5, 2);
rect = rect.Expand(new Vector2I(10, 0)); // прямоугольник равен Rect2i(0, 0, 10, 2)
rect = rect.Expand(new Vector2I(-5, 5)); // прямоугольник равен Rect2i(-5, 0, 15, 5)
Возвращает площадь прямоугольника. Это эквивалентно size.x * size.y. См. также has_area().
Возвращает центральную точку прямоугольника. Это то же самое, что position + (size / 2).
Примечание: Если size нечетный, результат будет округлен в сторону member position].
Rect2i grow(amount: int) const 🔗
Возвращает копию этого прямоугольника, расширенного со всех сторон на заданный amount. Отрицательное amount вместо этого сжимает прямоугольник. См. также grow_individual() и grow_side().
var a = Rect2i(4, 4, 8, 8).grow(4) # а — это Rect2i(0, 0, 16, 16)
var b = Rect2i(0, 0, 8, 4).grow(2) # b — это Rect2i(-2, -2, 12, 8)
var a = new Rect2I(4, 4, 8, 8).Grow(4); // а — это Rect2i(0, 0, 16, 16)
var b = new Rect2I(0, 0, 8, 4).Grow(2); // b — это Rect2i(-2, -2, 12, 8)
Rect2i grow_individual(left: int, top: int, right: int, bottom: int) const 🔗
Возвращает копию этого прямоугольника со сторонами left, top, right и bottom, расширенными на заданные значения. Отрицательные значения вместо этого сжимают стороны. См. также grow() и grow_side().
Rect2i grow_side(side: int, amount: int) const 🔗
Возвращает копию этого прямоугольника с его side, расширенным на заданное amount (см. константы Side). Отрицательное amount вместо этого сжимает прямоугольник. См. также grow() и grow_individual().
Возвращает true, если этот прямоугольник имеет положительную ширину и высоту. См. также get_area().
bool has_point(point: Vector2i) const 🔗
Возвращает true, если прямоугольник содержит заданный point. По соглашению, точки на правом и нижнем краях не включены.
Примечание: Этот метод ненадежен для Rect2i с отрицательным size. Сначала используйте abs(), чтобы получить допустимый прямоугольник.
Rect2i intersection(b: Rect2i) const 🔗
Возвращает пересечение между этим прямоугольником и b. Если прямоугольники не пересекаются, возвращает пустой Rect2i.
var a = Rect2i(0, 0, 5, 10)
var b = Rect2i(2, 0, 8, 4)
var c = a.intersection(b) # c — это Rect2i(2, 0, 3, 4)
var a = new Rect2I(0, 0, 5, 10);
var b = new Rect2I(2, 0, 8, 4);
var c = rect1.Intersection(rect2); // c — это Rect2i(2, 0, 3, 4)
Примечание: Если вам нужно только узнать, перекрываются ли два прямоугольника, используйте вместо этого intersects().
bool intersects(b: Rect2i) const 🔗
Возвращает true, если этот прямоугольник перекрывается с прямоугольником b. Края обоих прямоугольников исключаются.
Rect2i merge(b: Rect2i) const 🔗
Возвращает Rect2i, который охватывает этот прямоугольник и b по краям. См. также encludes().
Описания оператора
bool operator !=(right: Rect2i) 🔗
Возвращает true, если position или size обоих прямоугольников не равны.
bool operator ==(right: Rect2i) 🔗
Возвращает true, если position и size прямоугольников равны.