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...
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 прямоугольников равны.