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
Une boîte délimitante 2D alignée sur les axes utilisant des coordonnées à virgule flottante.
Description
Le type Variant intégré Rect2 représente un rectangle aligné sur les axes dans un espace 2D. Il est défini par sa position position et sa taille size, qui sont des Vector2. Il est fréquemment utilisé pour les tests de superposition rapide (voir intersects()). Bien que Rect2 lui-même soit aligné sur les axes, il peut être combiné avec Transform2D pour représenter un rectangle tourné ou cisaillé.
Pour des coordonnées entières, utilisez Rect2i. L'équivalent 3D de Rect2 est AABB.
Note : Les valeurs négatives pour size ne sont pas supportées. Avec une taille négative, la plupart des méthodes de Rect2 ne fonctionnent pas correctement. Utilisez abs() pour obtenir un Rect2 équivalent avec une taille non négative.
Note : Dans un contexte booléen, un Rect2 évalue à false si les deux valeurs position et size sont nulles (équivalent à Vector2.ZERO). Sinon, il évalue toujours à true.
Note
Il y a des différences notables dans l'utilisation de cette API en C#. Voir Différences de l'API C# par rapport à GDScript pour plus d'informations.
Tutoriels
Propriétés
|
||
|
||
|
Constructeurs
Rect2() |
|
Méthodes
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 |
|
Opérateurs
operator !=(right: Rect2) |
|
operator *(right: Transform2D) |
|
operator ==(right: Rect2) |
Descriptions des propriétés
Le point de fin. Il s'agit généralement du coin inférieur droit du rectangle, et est équivalent à position + taille. Définir ce point affecte la taille size.
Vector2 position = Vector2(0, 0) 🔗
Le point d'origine. Il s'agit généralement du coin supérieur gauche du rectangle.
Vector2 size = Vector2(0, 0) 🔗
La largeur et la hauteur du rectangle, à partir du point position. Définir cette valeur affecte également le point end.
Note : Il est recommandé de fixer la largeur et la hauteur à des valeurs non négatives, car la plupart des méthodes de Godot supposent que position est le coin supérieur gauche, et end le coin inférieur droit. Pour obtenir un rectangle équivalent avec une taille non négative, utilisez abs().
Descriptions des constructeurs
Construit un Rect2 avec sa position position et sa taille size définies à Vector2.ZERO.
Construit un Rect2 comme une copie du Rect2 donné.
Construit un Rect2 à partir d'un Rect2i.
Rect2 Rect2(position: Vector2, size: Vector2)
Construit un Rect2 avec sa position position et sa taille size.
Rect2 Rect2(x: float, y: float, width: float, height: float)
Construit un Rect2 en définissant sa position à (x, y), et sa taille size à (width, height).
Descriptions des méthodes
Renvoie un Rect2 équivalent à ce rectangle, avec sa largeur et sa hauteur modifiées pour être des valeurs non négatives, et avec sa position étant dans le coin supérieur gauche du rectangle.
var rect = Rect2(25, 25, -100, -50)
var absolue = rect.abs() # absolue est Rect2(-75, -25, 100, 50)
var rect = new Rect2(25, 25, -100, -50);
var absolue = rect.Abs(); // absolue est Rect2(-75, -25, 100, 50)
Note : Il est recommandé d'utiliser cette méthode lorsque size est négatif, car la plupart des autres méthodes de Godot supposent que la position est dans le coin supérieur gauche, et end est le coin inférieur droit.
bool encloses(b: Rect2) const 🔗
Renvoie true si ce rectangle entoure complètement le rectangle b.
Rect2 expand(to: Vector2) const 🔗
Renvoie une copie de ce rectangle étendu pour aligner les bords avec le point to donné, si nécessaire.
var rect = Rect2(0, 0, 5, 2)
rect = rect.expand(Vector2(10, 0)) # rect vaut Rect2(0, 0, 10, 2)
rect = rect.expand(Vector2(-5, 5)) # rect vaut Rect2(-5, 0, 15, 5)
var rect = new Rect2(0, 0, 5, 2);
rect = rect.Expand(new Vector2(10, 0)); // rect vaut Rect2(0, 0, 10, 2)
rect = rect.Expand(new Vector2(-5, 5)); // rect vaut Rect2(-5, 0, 15, 5)
Renvoie l'aire du rectangle. Ceci est équivalent à size.x * size.y. Voir aussi has_area().
Renvoie le point central du rectangle. Cela revient à position + (size / 2.0).
Vector2 get_support(direction: Vector2) const 🔗
Renvoie la position du sommet de ce rectangle qui est le plus loin dans la direction donnée. Ce point est communément appelé le point de support dans les algorithmes de détection de collision.
Rect2 grow(amount: float) const 🔗
Renvoie une copie de ce rectangle étendu sur tous les côtés par le montant amount donné. Une quantité négative pour amount rétrécit le rectangle à la place. Voir aussi grow_individual() et grow_side().
var a = Rect2(4, 4, 8, 8).grow(4) # a vaut Rect2(0, 0, 16, 16)
var b = Rect2(0, 0, 8, 4).grow(2) # b vaut Rect2(-2, -2, 12, 8)
var a = new Rect2(4, 4, 8, 8).Grow(4); // a vaut Rect2(0, 0, 16, 16)
var b = new Rect2(0, 0, 8, 4).Grow(2); // b vaut Rect2(-2, -2, 12, 8)
Rect2 grow_individual(left: float, top: float, right: float, bottom: float) const 🔗
Renvoie une copie de ce rectangle avec ses côtés haut, bas, gauche droite étendus par les montants respectifs left, top, right et bottom donnés. Les valeurs négatives réduisent les côtés à la place. Voir aussi grow() et grow_side().
Rect2 grow_side(side: int, amount: float) const 🔗
Renvoie une copie de ce rectangle avec le côté side étendus par les le montant amount donné (voir les constantes Side). Une valeur amount négative rétrécit le rectangle à la place. Voir aussi grow() et grow_side().
Renvoie true si ce rectangle a une largeur et une hauteur positives. Voir aussi get_area().
bool has_point(point: Vector2) const 🔗
Renvoie true si le rectangle contient le point point donné. Par convention, les points sur les bords droit et bas ne sont pas inclus.
Note : Cette méthode n'est pas fiable pour des Rect2 avec une taille size négative . Utilisez abs() d'abord pour obtenir un rectangle valide.
Rect2 intersection(b: Rect2) const 🔗
Renvoie l'intersection entre ce rectangle et b. Si les rectangles ne se croisent pas, renvoie un Rect2 vide.
var rect1 = Rect2(0, 0, 5, 10)
var rect2 = Rect2(2, 0, 8, 4)
var a = rect1.intersection(rect2) # a vaut Rect2(2, 0, 3, 4)
var rect1 = nouveau Rect2(0, 0, 5, 10);
var rect2 = nouveau Rect2(2, 0, 8, 4);
var a = rect1.Intersection(rect2); // a vaut Rect2(2, 0, 3, 4)
Note : Si vous souhaiter seulement savoir si les deux rectangles se superposent, utilisez intersects() à la place.
bool intersects(b: Rect2, include_borders: bool = false) const 🔗
Renvoie true si ce rectangle se superpose avec le rectangle b. Les bords des deux rectangles sont exclus, sauf si include_borders vaut true.
bool is_equal_approx(rect: Rect2) const 🔗
Renvoie true si ce rectangle et rect sont approximativement égaux, en appelant Vector2.is_equal_approx() sur position et size.
Renvoie true si les valeurs de ce rectangle sont finies, en appelant Vector2.is_finite() sur position et size.
Renvoie un Rect2 qui encadre à la fois ce rectangle et b autour des bords. Voir aussi encloses().
Descriptions des opérateurs
bool operator !=(right: Rect2) 🔗
Renvoie true si position ou size des deux rectangles n'est pas égaux.
Note : En raison d'erreurs de précision des flottants, envisagez d'utiliser is_equal_approx() qui est plus fiable.
Rect2 operator *(right: Transform2D) 🔗
Transforme (multiplie) de manière inverse le Rect2 par la matrice de transformation Transform2D donnée, avec la supposition que la base de la transformation est orthonormée (c.a.d. une rotation/réflexion est OK, une échelle/un cisaillement ne l'est pas).
rect * transform est équivalent à transform.inverse() * rect. Voir Transform2D.inverse().
Pour transformer par l'inverse d'une transformation affine (par ex. avec une mise à l'échelle), transform.affine_inverse() * rect peut être utilisé à la place. Voir Transform2D.affine_inverse().
bool operator ==(right: Rect2) 🔗
Renvoie true si les position et size des rectangles sont tous les deux exactement égaux, respectivement.
Note : En raison d'erreurs de précision des flottants, envisagez d'utiliser is_equal_approx() qui est plus fiable.