Rect2

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

說明

Rect2內建Variant型別表示二維空間中的軸對齊矩形。它由其positionsize定義,分別是Vector2。常用於快速重疊測試(參見intersects())。雖然Rect2本身是軸對齊的,但它可以與Transform2D組合來表示旋轉或傾斜的矩形。

對於整數座標,請使用 Rect2i。與 Rect2 等效的 3D 是 AABB

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

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

備註

使用 C# 操作此 API 時有顯著差異,詳見 C# API 與 GDScript 的不同

教學

屬性

Vector2

end

Vector2(0, 0)

Vector2

position

Vector2(0, 0)

Vector2

size

Vector2(0, 0)

建構子

Rect2

Rect2()

Rect2

Rect2(from: Rect2)

Rect2

Rect2(from: Rect2i)

Rect2

Rect2(position: Vector2, size: Vector2)

Rect2

Rect2(x: float, y: float, width: float, height: float)

方法

Rect2

abs() const

bool

encloses(b: Rect2) const

Rect2

expand(to: Vector2) const

float

get_area() const

Vector2

get_center() const

Vector2

get_support(direction: Vector2) const

Rect2

grow(amount: float) const

Rect2

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

Rect2

grow_side(side: int, amount: float) const

bool

has_area() const

bool

has_point(point: Vector2) const

Rect2

intersection(b: Rect2) const

bool

intersects(b: Rect2, include_borders: bool = false) const

bool

is_equal_approx(rect: Rect2) const

bool

is_finite() const

Rect2

merge(b: Rect2) const

運算子

bool

operator !=(right: Rect2)

Rect2

operator *(right: Transform2D)

bool

operator ==(right: Rect2)


屬性說明

Vector2 end = Vector2(0, 0) 🔗

終點角。通過 position + size 計算而來。設定該值會修改大小。


Vector2 position = Vector2(0, 0) 🔗

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


Vector2 size = Vector2(0, 0) 🔗

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

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


建構子說明

Rect2 Rect2() 🔗

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


Rect2 Rect2(from: Rect2)

建構給定 Rect2 的副本。


Rect2 Rect2(from: Rect2i)

Rect2i 建構 Rect2


Rect2 Rect2(position: Vector2, size: Vector2)

按位置和大小建構 Rect2


Rect2 Rect2(x: float, y: float, width: float, height: float)

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


方法說明

Rect2 abs() const 🔗

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

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

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


bool encloses(b: Rect2) const 🔗

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


Rect2 expand(to: Vector2) const 🔗

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

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

rect = rect.expand(Vector2(10, 0)) # rect is Rect2(0, 0, 10, 2)
rect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 15, 5)

float get_area() const 🔗

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


Vector2 get_center() const 🔗

返回該向量的逆向量。與 Vector3(1.0 / v.x, 1.0 / v.y, 1.0 / v.z) 相同。


Vector2 get_support(direction: Vector2) const 🔗

Returns the vertex's position of this rect that's the farthest in the given direction. This point is commonly known as the support point in collision detection algorithms.


Rect2 grow(amount: float) const 🔗

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

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

Rect2 grow_individual(left: float, top: float, right: float, bottom: float) const 🔗

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


Rect2 grow_side(side: int, amount: float) 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: Vector2) const 🔗

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

注意:對於大小為負Rect2,該方法並不可靠。請使用 abs() 獲取等價的正數大小矩形再檢查是否包含某個點。


Rect2 intersection(b: Rect2) const 🔗

傳回此矩形與 b 之間的交集。如果矩形不相交,則傳回空的 Rect2

var rect1 = Rect2(0, 0, 5, 10)
var rect2 = Rect2(2, 0, 8, 4)

var a = rect1.intersection(rect2) # a is Rect2(2, 0, 3, 4)

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


bool intersects(b: Rect2, include_borders: bool = false) const 🔗

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


bool is_equal_approx(rect: Rect2) const 🔗

Returns true if this rectangle and rect are approximately equal, by calling Vector2.is_equal_approx() on the position and the size.


bool is_finite() const 🔗

如果該平面是有限的,則返回 true,判斷方法是在每個分量上呼叫 @GlobalScope.is_finite()


Rect2 merge(b: Rect2) const 🔗

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


運算子說明

bool operator !=(right: Rect2) 🔗

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

注意:由於浮點數精度誤差,請考慮改用 is_equal_approx(),會更可靠。


Rect2 operator *(right: Transform2D) 🔗

Inversely transforms (multiplies) the Rect2 by the given Transform2D transformation matrix, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not).

rect * transform is equivalent to transform.inverse() * rect. See Transform2D.inverse().

For transforming by inverse of an affine transformation (e.g. with scaling) transform.affine_inverse() * rect can be used instead. See Transform2D.affine_inverse().


bool operator ==(right: Rect2) 🔗

如果矩形完全相等,則返回 true

注意:由於浮點數精度誤差,請考慮改用 is_equal_approx(),會更可靠。