Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Rect2i¶
使用整数坐标的 2D 轴对齐边界框。
描述¶
Rect2i 是内置的 Variant 类型,代表 2D 空间中与轴对齐的矩形,使用整数坐标。由 position 和 size 定义,它们都是 Vector2i。因为这个矩形不会旋转,所以可以进行快速的重合检查(见 intersects)。
浮点数坐标的版本见 Rect2。
注意:不支持负数的 size。如果大小为负数,Rect2i 的大多数方法都无法正常工作。请使用 abs 获取等价且大小非负的 Rect2i。
注意:在布尔值上下文中,position 和 size 均为零(等于 Vector2i.ZERO)的 Rect2i 会得到 false
。否则得到 true
。
备注
通过 C# 使用这个 API 时有显著的不同。详见 C# API 与 GDScript 的差异。
教程¶
属性¶
|
||
|
||
|
构造函数¶
Rect2i ( ) |
|
方法¶
abs ( ) const |
|
get_area ( ) const |
|
get_center ( ) const |
|
grow_individual ( int left, int top, int right, int bottom ) const |
|
has_area ( ) const |
|
intersection ( Rect2i b ) const |
|
intersects ( Rect2i b ) const |
|
操作符¶
operator != ( Rect2i right ) |
|
operator == ( Rect2i right ) |
属性说明¶
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 的副本。
根据 Rect2 构造 Rect2i。会截断浮点数坐标。
Rect2i Rect2i ( Vector2i position, Vector2i size )
使用指定的 position
和 size
构造 Rect2i。
方法说明¶
Rect2i abs ( ) const
返回一个与该矩形等效的 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 ( Rect2i b ) const
如果该 Rect2i 完全包含另一个,则返回 true
。
Rect2i expand ( Vector2i to ) const
返回该矩形的副本,如有必要,该矩形被扩展为将边缘与给定的 to
点对齐。
var rect = Rect2i(0, 0, 5, 2)
rect = rect.expand(Vector2i(10, 0)) # rect 为 Rect2i(0, 0, 10, 2)
rect = rect.expand(Vector2i(-5, 5)) # rect 为 Rect2i(-5, 0, 10, 5)
var rect = new Rect2I(0, 0, 5, 2);
rect = rect.Expand(new Vector2I(10, 0)); // rect 为 Rect2I(0, 0, 10, 2)
rect = rect.Expand(new Vector2I(-5, 5)); // rect 为 Rect2I(-5, 0, 10, 5)
int get_area ( ) const
返回该矩形的面积。这相当于 size.x * size.y
。另请参阅 has_area。
Vector2i get_center ( ) const
返回该矩形的中心点。这与 position + (size / 2)
相同。
注意:如果 size 为奇数,则结果将向 position 舍入。
Rect2i grow ( int amount ) const
返回该矩形的副本,该矩形在所有边上扩展给定的 amount
。负的 amount
会缩小该矩形。另见 grow_individual 和 grow_side。
var a = Rect2i(4, 4, 8, 8).grow(4) # a 为 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); // a 为 Rect2I(0, 0, 16, 16)
var b = new Rect2I(0, 0, 8, 4).Grow(2); // b 为 Rect2I(-2, -2, 12, 8)
Rect2i grow_individual ( int left, int top, int right, int bottom ) const
返回该矩形的副本,其 left
、top
、right
、和 bottom
边扩展了给定的量。相反,负值会缩小边。另见 grow and grow_side。
Rect2i grow_side ( int side, int amount ) const
返回该矩形的副本,其 side
按给定的 amount
扩展(请参阅 Side 常量)。相反,负的 amount
会缩小该矩形。另见 grow 和 grow_individual。
bool has_area ( ) const
如果该矩形具有正的宽度和高度,则返回 true
。另见 get_area。
bool has_point ( Vector2i point ) const
如果该矩形包含给定的 point
,则返回 true
。依照惯例,不包括右侧和底部边缘上的点。
注意:对于大小为负的 Rect2i,该方法并不可靠。请首先使用 abs 获取一个有效的矩形。
Rect2i intersection ( Rect2i b ) 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 ( Rect2i b ) const
如果该矩形与 b
矩形重叠,则返回 true
。两个矩形的边缘均被排除。
Rect2i merge ( Rect2i b ) const
返回一个包含该矩形和边缘周围的 b
的 Rect2i。另见 encloses。
操作符说明¶
bool operator != ( Rect2i right )
如果两个矩形的 position 或 size 不相等,则返回 true
。