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.

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