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

使用整數座標的 2D 軸對齊邊界框。

說明

Rect2i 內建 Variant 型別表示 2D 空間中的軸對齊矩形,使用整數座標。它由其 positionsize 定義,即Vector2i,由於它不會旋轉,所以常用於快速重疊測試(參見intersects())。

浮點座標,請參見Rect2

注意: 不支援 size 的負值。對於負大小,大多數 Rect2i 方法都無法正常運作。使用 abs() 獲得具有非負大小的等效 Rect2i

注意: 在布林本文中,如果positionsize 均為零(等於Vector2i.ZERO),則Rect2i 的計算結果為false )。否則,它的計算結果始終為 true

備註

使用 C# 操作此 API 時有顯著差異,詳見 C# API 與 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 計算而來。設定該值會修改大小。


Vector2i position = Vector2i(0, 0) 🔗

相機的位置是固定的,所以左上角總是在原點。


Vector2i size = Vector2i(0, 0) 🔗

矩形的寬度和高度,從 position 開始。設定此值也會影響 end 點。

注意:建議將寬度和高度設為非負值,因為Godot中的大多數方法都假設position是左上角,end是底部-右上角。若要獲得非負大小的等效矩形,請使用abs()


建構子說明

Rect2i Rect2i() 🔗

預設建構 Rect2ipositionsize 均為預設值(零)。


Rect2i Rect2i(from: Rect2i)

建構給定 Rect2i 的副本。


Rect2i Rect2i(from: Rect2)

Rect2 建構新的 Rect2i。浮點數座標將被截斷。


Rect2i Rect2i(position: Vector2i, size: Vector2i)

按位置和大小建構 Rect2i


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

透過將 position 設定為 (x, y) 並將其 size 設為 (width, height) 。


方法說明

Rect2i abs() const 🔗

傳回與此矩形等效的Rect2i,其寬度和高度修改為非負值,其position為矩形的左上角。

var rect = Rect2i(25, 25, -100, -50)
var absolute = rect.abs() # absolute is Rect2i(-75, -25, 100, 50)

注意:size為負數時,建議使用此方法,因為Godot中的大多數其他方法都假設position是左上角,end是右下角。


bool encloses(b: Rect2i) const 🔗

如果該 Rect2i 完全包含另一個,則返回 true


Rect2i expand(to: Vector2i) const 🔗

Returns a copy of this rectangle expanded to align the edges with the given to point, if necessary.

var rect = Rect2i(0, 0, 5, 2)

rect = rect.expand(Vector2i(10, 0)) # rect is Rect2i(0, 0, 10, 2)
rect = rect.expand(Vector2i(-5, 5)) # rect is Rect2i(-5, 0, 15, 5)

int get_area() const 🔗

返回該 Rect2 的面積。另請參閱 has_area()


Vector2i get_center() const 🔗

返回該 Rect2i 的中心,等於 position + (size / 2)。

如果 size 為奇數,則返回的中心值將向 position 四捨五入。


Rect2i grow(amount: int) const 🔗

傳回給定的amount 在所有邊上擴充的此矩形的副本。負的amount 會縮小矩形。另請參閱grow_individual()grow_side()

var a = Rect2i(4, 4, 8, 8).grow(4) # a is Rect2i(0, 0, 16, 16)
var b = Rect2i(0, 0, 8, 4).grow(2) # b is Rect2i(-2, -2, 12, 8)

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

傳回此矩形的副本,其 lefttoprightbottom 邊擴充了給定的量。負值會縮小另請參閱grow()grow_side()


Rect2i grow_side(side: int, amount: int) const 🔗

傳回此矩形的副本,其 side 按給定的 amount 擴充(請參閱 Side 常數)。負數 amount 會縮小矩形,相反。另請參見 grow()grow_individual()


bool has_area() const 🔗

Returns true if this rectangle has positive width and height. See also get_area().


bool has_point(point: Vector2i) const 🔗

返回 true 時,該 Rect2 包含此點。依照慣例,Rect2 的右邊緣和下邊緣是被排除在外的,因此包含位於這兩條邊上的點。

注意:對於大小為負Rect2,該方法並不可靠。請使用 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 is Rect2i(2, 0, 3, 4)

注意:如果您只需要知道兩個矩形是否重疊,請改用intersects()


bool intersects(b: Rect2i) const 🔗

如果該 Rect2ib 重疊(即至少包含一個共同的點),則返回 true


Rect2i merge(b: Rect2i) const 🔗

傳回包圍此矩形和邊緣周圍的bRect2i 。另請參閱 encloses()


運算子說明

bool operator !=(right: Rect2i) 🔗

如果矩形不相等,則返回 true


bool operator ==(right: Rect2i) 🔗

如果矩形相等,則返回 true