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.
Checking the stable version of the documentation...
Rect2
Una bounding box allineata agli assi 2D con coordinate in virgola mobile.
Descrizione
Il tipo di Variant integrato Rect2 rappresenta un rettangolo allineato agli assi in uno spazio 2D. È definito dalla sua position e size, che sono Vector2. Viene spesso utilizzato per test rapidi di sovrapposizione (vedi intersects()). Nonostante Rect2 sia allineato agli assi, può essere combinato con Transform2D per rappresentare un rettangolo ruotato o inclinato.
Per coordinate intere, usa Rect2i. L'equivalente 3D di Rect2 è AABB.
Nota: I valori negativi per size non sono supportati. Con dimensioni negative, la maggior parte dei metodi Rect2 non funziona correttamente. Utilizza abs() per ottenere un Rect2 equivalente con una dimensione non negativa.
Nota: In un contesto booleano, un Rect2 è valutato come false se sia position sia size sono zero (pari a Vector2.ZERO). Altrimenti, è sempre valutato come true.
Nota
Ci sono differenze sostanziali quando si usa questa API con C#. Vedi Differenze dell'API C# rispetto a GDScript per maggiori informazioni.
Tutorial
Proprietà
|
||
|
||
|
Costruttori
Rect2() |
|
Metodi
abs() const |
|
get_area() const |
|
get_center() const |
|
get_support(direction: Vector2) const |
|
grow_individual(left: float, top: float, right: float, bottom: float) const |
|
has_area() const |
|
intersection(b: Rect2) const |
|
intersects(b: Rect2, include_borders: bool = false) const |
|
is_equal_approx(rect: Rect2) const |
|
is_finite() const |
|
Operatori
operator !=(right: Rect2) |
|
operator *(right: Transform2D) |
|
operator ==(right: Rect2) |
Descrizioni delle proprietà
Il punto di fine. Di solito è l'angolo in basso a destra del rettangolo ed è equivalente a posizione + dimensioni. L'impostazione di questo punto influisce su size.
Vector2 position = Vector2(0, 0) 🔗
Il punto di origine. Di solito è l'angolo in alto a sinistra del rettangolo.
Vector2 size = Vector2(0, 0) 🔗
La larghezza e l'altezza del rettangolo, a partire da position. L'impostazione di questo valore influisce anche sul punto end.
Nota: Si consiglia di impostare larghezza e altezza su valori non negativi, poiché la maggior parte dei metodi in Godot presuppone che position sia l'angolo in alto a sinistra e end sia l'angolo in basso a destra. Per ottenere un rettangolo equivalente con dimensioni non negative, usa abs().
Descrizioni dei costruttori
Costruisce un Rect2 con la sua position e size impostate su Vector2.ZERO.
Costruisce un Rect2 come copia del Rect2 specificato.
Costruisce un Rect2 da un Rect2i.
Rect2 Rect2(position: Vector2, size: Vector2)
Costruisce un Rect2 dalla posizione (position) e dimensioni (size).
Rect2 Rect2(x: float, y: float, width: float, height: float)
Costruisce un Rect2 impostando la sua position su (x, y) e la sua size su (width, height).
Descrizioni dei metodi
Restituisce un Rect2 equivalente a questo rettangolo, con la sua larghezza e altezza modificate per essere valori non negativi e con la sua position che è l'angolo in alto a sinistra del rettangolo.
var rect = Rect2(25, 25, -100, -50)
var assoluto = rect.abs() # assoluto è Rect2(-75, -25, 100, 50)
var rect = new Rect2(25, 25, -100, -50);
var assoluto = rect.Abs(); // assoluto è Rect2(-75, -25, 100, 50)
Nota: Si consiglia di utilizzare questo metodo quando size è negativo, poiché la maggior parte degli altri metodi in Godot presuppone che position sia l'angolo in alto a sinistra e end sia l'angolo in basso a destra.
bool encloses(b: Rect2) const 🔗
Restituisce true se questo rettangolo racchiude completamente il rettangolo b.
Rect2 expand(to: Vector2) const 🔗
Restituisce una copia di questo rettangolo espanso per allineare i bordi con il punto to specificato, se necessario.
var rect = Rect2(0, 0, 5, 2)
rect = rect.expand(Vector2(10, 0)) # rect è Rect2(0, 0, 10, 2)
rect = rect.expand(Vector2(-5, 5)) # rect è Rect2(-5, 0, 15, 5)
var rect = new Rect2(0, 0, 5, 2);
rect = rect.Expand(new Vector2(10, 0)); // rect è Rect2(0, 0, 10, 2)
rect = rect.Expand(new Vector2(-5, 5)); // rect è Rect2(-5, 0, 15, 5)
Restituisce l'area di questo rettangolo. Questo è equivalente a size.x * size.y. Vedi anche has_area().
Restituisce il punto centrale del rettangolo. È lo stesso di position + (size / 2.0).
Vector2 get_support(direction: Vector2) const 🔗
Restituisce la posizione del vertice di questo rettangolo che è il più lontano nella direzione fornita. Questo punto è comunemente noto come punto di supporto negli algoritmi di rilevamento delle collisioni.
Rect2 grow(amount: float) const 🔗
Restituisce una copia di questo rettangolo esteso su tutti i lati dalla quantità amount. Un amount negativo restringe invece il rettangolo. Vedi anche grow_individual() e grow_side().
var a = Rect2(4, 4, 8, 8).grow(4) # a è Rect2(0, 0, 16, 16)
var b = Rect2(0, 0, 8, 4).grow(2) # b è Rect2(-2, -2, 12, 8)
var a = new Rect2(4, 4, 8, 8).Grow(4); // a è Rect2(0, 0, 16, 16)
var b = new Rect2(0, 0, 8, 4).Grow(2); // b è Rect2(-2, -2, 12, 8)
Rect2 grow_individual(left: float, top: float, right: float, bottom: float) const 🔗
Restituisce una copia di questo rettangolo con i suoi lati sinistro (left), superiore (top), destro (right) e inferiore (bottom) estesi delle quantità specificate. I valori negativi, invece, restringono i lati. Vedi anche grow() e grow_side().
Rect2 grow_side(side: int, amount: float) const 🔗
Restituisce una copia di questo rettangolo con il suo lato (side) esteso della quantità amount (vedi le costanti di Side). Un amount negativo, invece, restringe il rettangolo. Vedi anche grow() e grow_individual().
Restituisce true se questo rettangolo ha larghezza e altezza positive. Vedi anche get_area().
bool has_point(point: Vector2) const 🔗
Restituisce true se il rettangolo contiene il punto point. Per convenzione, i punti sui bordi destro e inferiore non sono inclusi.
Nota: Questo metodo non è affidabile per un Rect2 con una size negativa. Utilizza prima abs() per ottenere un rettangolo valido.
Rect2 intersection(b: Rect2) const 🔗
Restituisce l'intersezione tra questo rettangolo e b. Se i rettangoli non si intersecano, restituisce un Rect2 vuoto.
var rect1 = Rect2(0, 0, 5, 10)
var rect2 = Rect2(2, 0, 8, 4)
var a = rect1.intersection(rect2) # a è Rect2(2, 0, 3, 4)
var rect1 = new Rect2(0, 0, 5, 10);
var rect2 = new Rect2(2, 0, 8, 4);
var a = rect1.Intersection(rect2); // a è Rect2(2, 0, 3, 4)
Nota: Se hai solo bisogno di sapere se due rettangoli si sovrappongono, usa invece intersects().
bool intersects(b: Rect2, include_borders: bool = false) const 🔗
Restituisce true se questo rettangolo si sovrappone al rettangolo b. I bordi di entrambi i rettangoli sono esclusi, a meno che include_borders sia true.
bool is_equal_approx(rect: Rect2) const 🔗
Restituisce true se questo rettangolo e rect sono approssimativamente eguali, chiamando@GlobalScope.is_equal_approx() su position e size.
Restituisce true se i valori di questo rettangolo sono finiti, chiamando Vector2.is_finite() su position e size.
Restituisce un Rect2 che racchiude sia questo rettangolo sia b attorno ai bordi. Vedi anche encloses().
Descrizioni degli operatori
bool operator !=(right: Rect2) 🔗
Restituisce true se position o size di entrambi i rettangoli non sono uguali.
Note: A causa di errori di precisione per virgola mobile, considera invece utilizzare is_equal_approx(), che è più affidabile.
Rect2 operator *(right: Transform2D) 🔗
Trasforma inversamente (moltiplica) il Rect2 per la matrice di trasformazione Transform2D fornita, presupponendo che la base di trasformazione sia ortonormale (ovvero rotazione/riflessione vanno bene, ma scala/distorsione no).
rect * transform è equivalente a transform.inverse() * rect. Vedi Transform2D.inverse().
Per trasformare per inverso una trasformazione affine (ad esempio con scala) può essere utilizzato transform.affine_inverse() * rect. Vedi Transform2D.affine_inverse().
bool operator ==(right: Rect2) 🔗
Restituisce true se position e size di entrambi i rettangoli sono esattamente uguali, rispettivamente.
Note: A causa di errori di precisione per virgola mobile, considera invece utilizzare is_equal_approx(), che è più affidabile.