Rect2i

Двумерная ограничивающая рамка, выровненная по осям, с использованием целочисленных координат.

Описание

Встроенный тип Variant Rect2i представляет собой выровненный по осям прямоугольник в двумерном пространстве с использованием целочисленных координат. Он определяется его position и size, которые являются Vector2i. Поскольку он не вращается, он часто используется для быстрых тестов на перекрытие (см. intersects()).

Для координат с плавающей точкой см. Rect2.

Примечание: Отрицательные значения для size не поддерживаются. При отрицательном размере большинство методов Rect2i работают некорректно. Используйте abs(), чтобы получить эквивалентный Rect2i с неотрицательным размером.

Примечание: В булевом контексте Rect2i оценивается как false, если и position, и size равны нулю (равно Vector2i.ZERO). В противном случае всегда принимается значение true.

Примечание

Существуют заметные различия при использовании данного API с C#. Подробнее см. API различия C# и GDScript.

Обучающие материалы

Свойства

Vector2i

end

Vector2i(0, 0)

Vector2i

position

Vector2i(0, 0)

Vector2i

size

Vector2i(0, 0)

Конструкторы

Rect2i

Rect2i()

Rect2i

Rect2i(from: Rect2i)

Rect2i

Rect2i(from: Rect2)

Rect2i

Rect2i(position: Vector2i, size: Vector2i)

Rect2i

Rect2i(x: int, y: int, width: int, height: int)

Методы

Rect2i

abs() const

bool

encloses(b: Rect2i) const

Rect2i

expand(to: Vector2i) const

int

get_area() const

Vector2i

get_center() const

Rect2i

grow(amount: int) const

Rect2i

grow_individual(left: int, top: int, right: int, bottom: int) const

Rect2i

grow_side(side: int, amount: int) const

bool

has_area() const

bool

has_point(point: Vector2i) const

Rect2i

intersection(b: Rect2i) const

bool

intersects(b: Rect2i) const

Rect2i

merge(b: Rect2i) const

Операторы

bool

operator !=(right: Rect2i)

bool

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 Rect2i() 🔗

Создает Rect2i с его position и size, установленными на Vector2i.ZERO.


Rect2i Rect2i(from: Rect2i)

Создает Rect2i как копию заданного Rect2i.


Rect2i Rect2i(from: Rect2)

Создает 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 abs() const 🔗

Возвращает Rect2i, эквивалентный данному прямоугольнику, с измененной шириной и высотой, которые стали неотрицательными значениями, и с position, являющейся верхним левым углом прямоугольника.

var rect = 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)

int get_area() const 🔗

Возвращает площадь прямоугольника. Это эквивалентно size.x * size.y. См. также has_area().


Vector2i get_center() const 🔗

Возвращает центральную точку прямоугольника. Это то же самое, что 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)

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().


bool has_area() const 🔗

Возвращает 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)

Примечание: Если вам нужно только узнать, перекрываются ли два прямоугольника, используйте вместо этого 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 прямоугольников равны.