Rect2

Un cuadro delimitador 2D alineado con los ejes que usa coordenadas de punto flotante.

Descripción

El tipo Variant incorporado Rect2 representa un rectángulo alineado con los ejes en un espacio 2D. Se define por su position y su size, que son Vector2. Se utiliza con frecuencia para pruebas rápidas de superposición (véase intersects()). Aunque Rect2 en sí está alineado con los ejes, puede combinarse con Transform2D para representar un rectángulo rotado o sesgado.

Para coordenadas enteras, utiliza Rect2i. El equivalente 3D a Rect2 es AABB.

Nota: No se admiten valores negativos para size. Con un tamaño negativo, la mayoría de los métodos Rect2 no funcionan correctamente. Utiliza abs() para obtener un Rect2 equivalente con un tamaño no negativo.

Nota: En un contexto booleano, un Rect2 se evalúa como false si tanto position como size son cero (igual a Vector2.ZERO). De lo contrario, siempre se evalúa como true.

Nota

Hay diferencias notables cuando usa esta API con C#. Véase Diferencias de la API de C# con GDScript para más información.

Tutoriales

Propiedades

Vector2

end

Vector2(0, 0)

Vector2

position

Vector2(0, 0)

Vector2

size

Vector2(0, 0)

Constructores

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)

Métodos

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

Operadores

bool

operator !=(right: Rect2)

Rect2

operator *(right: Transform2D)

bool

operator ==(right: Rect2)


Descripciones de Propiedades

Vector2 end = Vector2(0, 0) 🔗

El punto final. Este es usualmente la esquina inferior derecha del rectángulo, y es equivalente a position + size. Establecer este punto afecta el size.


Vector2 position = Vector2(0, 0) 🔗

El punto de origen. Este es usualmente la esquina superior izquierda del rectángulo.


Vector2 size = Vector2(0, 0) 🔗

La anchura y la altura del rectángulo, empezando desde position. Establecer este valor también afecta al punto end.

Nota: Se recomienda establecer la anchura y la altura a valores no negativos, ya que la mayoría de los métodos en Godot asumen que la position es la esquina superior izquierda, y el end es la esquina inferior derecha. Para obtener un rectángulo equivalente con un tamaño no negativo, utiliza abs().


Descripciones de Constructores

Rect2 Rect2() 🔗

Construye un Rect2 con su position y size establecidos a Vector2.ZERO.


Rect2 Rect2(from: Rect2)

Construye un Rect2 como una copia del Rect2 dado.


Rect2 Rect2(from: Rect2i)

Construye un Rect2 desde un Rect2i.


Rect2 Rect2(position: Vector2, size: Vector2)

Construye un Rect2 por position y size.


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

Construye un Rect2 estableciendo su position a (x, y) y su size a (width, height).


Descripciones de Métodos

Rect2 abs() const 🔗

Devuelve un Rect2 equivalente a este rectángulo, con su anchura y altura modificadas para que sean valores no negativos, y con su position siendo la esquina superior izquierda del rectángulo.

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

Nota: Se recomienda utilizar este método cuando size es negativo, ya que la mayoría de los otros métodos en Godot asumen que la position es la esquina superior izquierda, y el end es la esquina inferior derecha.


bool encloses(b: Rect2) const 🔗

Devuelve true si este rectángulo encierra completamente el rectángulo b.


Rect2 expand(to: Vector2) const 🔗

Devuelve una copia de este rectángulo expandida para alinear los bordes con el punto to dado, si es necesario.

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 🔗

Devuelve el área del rectángulo. Esto es equivalente a size.x * size.y. Véase también has_area().


Vector2 get_center() const 🔗

Devuelve el punto central del rectángulo. Esto es lo mismo que position + (size / 2.0).


Vector2 get_support(direction: Vector2) const 🔗

Devuelve la posición del vértice de este rect que está más lejos en la dirección dada. Este punto se conoce comúnmente como el punto de soporte en los algoritmos de detección de colisiones.


Rect2 grow(amount: float) const 🔗

Devuelve una copia de este rectángulo extendido en todos los lados por la amount dada. Una amount negativa encoge el rectángulo en su lugar. Véase también grow_individual() y grow_side().

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

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

Devuelve una copia de este rectángulo con sus lados left, top, right y bottom extendidos por las cantidades dadas. Los valores negativos encogen los lados, en su lugar. Véase también grow() y grow_side().


Rect2 grow_side(side: int, amount: float) const 🔗

Devuelve una copia de este rectángulo con su side extendido por la amount dada (véase las constantes Side). Una amount negativa encoge el rectángulo, en su lugar. Véase también grow() y grow_individual().


bool has_area() const 🔗

Devuelve true si este rectángulo tiene un ancho y un alto positivos. Véase también get_area().


bool has_point(point: Vector2) const 🔗

"Devuelve true si el rectángulo contiene el point dado. Por convención, los puntos en los bordes derecho e inferior no están incluidos.

Nota: Este método no es fiable para Rect2 con un tamaño size negativo. Utiliza abs() primero para obtener un rectángulo válido.


Rect2 intersection(b: Rect2) const 🔗

Devuelve la intersección entre este rectángulo y b. Si los rectángulos no se intersecan, devuelve un Rect2 vacío.

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

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

Nota: Si solo necesitas saber si dos rectángulos se superponen, usa intersects() en su lugar.


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

Devuelve true si este rectángulo se superpone con el rectángulo b. Los bordes de ambos rectángulos se excluyen, a menos que include_borders sea true.


bool is_equal_approx(rect: Rect2) const 🔗

Devuelve true si este rectángulo y rect son aproximadamente iguales, llamando a Vector2.is_equal_approx() en la position y el size.


bool is_finite() const 🔗

Devuelve true si los valores de este rectángulo son finitos, llamando a Vector2.is_finite() en la position y el size.


Rect2 merge(b: Rect2) const 🔗

Devuelve un Rect2 que encierra tanto este rectángulo como b alrededor de los bordes. Véase también encloses().


Descripciones de Operadores

bool operator !=(right: Rect2) 🔗

Devuelve true si la position o el size de ambos rectángulos no son iguales.

Nota: Debido a errores de precisión de punto flotante, considera usar is_equal_approx() en su lugar, que es más fiable.


Rect2 operator *(right: Transform2D) 🔗

Transforma inversamente (multiplica) el Rect2 por la matriz de transformación Transform2D dada, bajo la suposición de que la base de transformación es ortonormal (es decir, la rotación/reflexión está bien, la escala/sesgo no lo está).

rect * transform es equivalente a transform.inverse() * rect. Véase Transform2D.inverse().

Para transformar por la inversa de una transformación afín (por ejemplo, con escala) se puede utilizar transform.affine_inverse() * rect en su lugar. Véase Transform2D.affine_inverse().


bool operator ==(right: Rect2) 🔗

Devuelve true si tanto position como size de los rectángulos son exactamente iguales, respectivamente.

Nota: Debido a errores de precisión de punto flotante, considera usar is_equal_approx() en su lugar, que es más fiable.