Class Rect2
A 2D axis-aligned bounding box using floating-point coordinates.
Remarks
The Rect2 built-in Variant type represents an axis-aligned rectangle in a 2D space. It is defined by its position and size, which are Vector2. It is frequently used for fast overlap tests (see Rect2.intersects). Although Rect2 itself is axis-aligned, it can be combined with Transform2D to represent a rotated or skewed rectangle.
For integer coordinates, use Rect2i. The 3D equivalent to Rect2 is AABB.
Note: Negative values for size are not supported. With negative size, most Rect2 methods do not work correctly. Use abs to get an equivalent Rect2 with a non-negative size.
Note: In a boolean context, a Rect2 evaluates to false if both position and size are zero (equal to ZERO). Otherwise, it always evaluates to true.
See Also
Constructors
Rect2
Rect2 Rect2
Rect2(Rect2)
Constructs a Rect2 as a copy of the given Rect2.
Rect2 Rect2(Rect2 from)
Parameters
fromRect2
Rect2(Rect2i)
Constructs a Rect2 from a Rect2i.
Rect2 Rect2(Rect2i from)
Parameters
fromRect2i
Rect2(Vector2, Vector2)
Constructs a Rect2 by position and size.
Rect2 Rect2(Vector2 position, Vector2 size)
Parameters
Rect2(float, float, float, float)
Rect2 Rect2(float x, float y, float width, float height)
Parameters
Properties
end
The ending point. This is usually the bottom-right corner of the rectangle, and is equivalent to position + size. Setting this point affects the size.
var end : Vector2 = Vector2(0, 0)
Property Value
position
The origin point. This is usually the top-left corner of the rectangle.
var position : Vector2 = Vector2(0, 0)
Property Value
size
The rectangle's width and height, starting from position. Setting this value also affects the end point.
Note: It's recommended setting the width and height to non-negative values, as most methods in Godot assume that the position is the top-left corner, and the end is the bottom-right corner. To get an equivalent rectangle with non-negative size, use abs.
var size : Vector2 = Vector2(0, 0)
Property Value
Methods
abs
Qualifiers: const
Returns a Rect2 equivalent to this rectangle, with its width and height modified to be non-negative values, and with its position being the top-left corner of the rectangle.
var rect = Rect2(25, 25, -100, -50)
var absolute = rect.abs() # absolute is Rect2(-75, -25, 100, 50)
Note: It's recommended to use this method when size is negative, as most other methods in Godot assume that the position is the top-left corner, and the end is the bottom-right corner.
Rect2 abs
encloses(Rect2)
Qualifiers: const
Returns true if this rectangle completely encloses the b rectangle.
bool encloses(Rect2 b)
Parameters
bRect2
expand(Vector2)
Qualifiers: const
Returns a copy of this rectangle expanded to align the edges with the given to point, if necessary.
Rect2 expand(Vector2 to)
Parameters
toVector2
get_area
Qualifiers: const
Returns the rectangle's area. This is equivalent to size.x * size.y. See also has_area.
float get_area
get_center
Qualifiers: const
Returns the center point of the rectangle. This is the same as position + (size / 2.0).
Vector2 get_center
get_support(Vector2)
Qualifiers: 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.
Vector2 get_support(Vector2 direction)
Parameters
directionVector2
grow(float)
Qualifiers: const
Returns a copy of this rectangle extended on all sides by the given amount. A negative amount shrinks the rectangle instead. See also Rect2.grow_individual and Rect2.grow_side.
Rect2 grow(float amount)
Parameters
amountfloat
grow_individual(float, float, float, float)
Qualifiers: const
Returns a copy of this rectangle with its left, top, right, and bottom sides extended by the given amounts. Negative values shrink the sides, instead. See also Rect2.grow and Rect2.grow_side.
Rect2 grow_individual(float left, float top, float right, float bottom)
Parameters
grow_side(int, float)
Qualifiers: const
Returns a copy of this rectangle with its side extended by the given amount (see Side constants). A negative amount shrinks the rectangle, instead. See also Rect2.grow and Rect2.grow_individual.
Rect2 grow_side(int side, float amount)
Parameters
has_area
Qualifiers: const
Returns true if this rectangle has positive width and height. See also get_area.
bool has_area
has_point(Vector2)
Qualifiers: const
Returns true if the rectangle contains the given point. By convention, points on the right and bottom edges are not included.
Note: This method is not reliable for Rect2 with a negative size. Use abs first to get a valid rectangle.
bool has_point(Vector2 point)
Parameters
pointVector2
intersection(Rect2)
Qualifiers: const
Returns the intersection between this rectangle and b. If the rectangles do not intersect, returns an empty 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)
Note: If you only need to know whether two rectangles are overlapping, use Rect2.intersects, instead.
Rect2 intersection(Rect2 b)
Parameters
bRect2
intersects(Rect2, bool)
Qualifiers: const
Returns true if this rectangle overlaps with the b rectangle. The edges of both rectangles are excluded, unless include_borders is true.
bool intersects(Rect2 b, bool include_borders)
Parameters
is_equal_approx(Rect2)
Qualifiers: 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_equal_approx(Rect2 rect)
Parameters
rectRect2
is_finite
Qualifiers: const
Returns true if this rectangle's values are finite, by calling is_finite on the position and the size.
bool is_finite
merge(Rect2)
Qualifiers: const
Returns a Rect2 that encloses both this rectangle and b around the edges. See also Rect2.encloses.
Rect2 merge(Rect2 b)
Parameters
bRect2
Operators
!= (Rect2)
Returns true if the position or size of both rectangles are not equal.
Note: Due to floating-point precision errors, consider using Rect2.is_equal_approx instead, which is more reliable.
bool != (Rect2 right)
Parameters
rightRect2
* (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 inverse.
For transforming by inverse of an affine transformation (e.g. with scaling) transform.affine_inverse() * rect can be used instead. See affine_inverse.
Rect2 * (Transform2D right)
Parameters
rightTransform2D
== (Rect2)
Returns true if both position and size of the rectangles are exactly equal, respectively.
Note: Due to floating-point precision errors, consider using Rect2.is_equal_approx instead, which is more reliable.
bool == (Rect2 right)
Parameters
rightRect2