Vector2

Un vettore 2D che utilizza coordinate in virgola mobile.

Descrizione

Una struttura a 2 elementi che può essere utilizzata per rappresentare coordinate 2D o qualsiasi altra coppia di valori numerici.

Utilizza coordinate in virgola mobile. Per impostazione predefinita, questi valori in virgola mobile usano una precisione a 32 bit, a differenza di float che è sempre a 64 bit. Se è necessaria una precisione doppia, compila il motore con l'opzione precision=double.

Vedi Vector2i per la sua controparte con numeri interi.

Nota: In un contesto booleano, un Vector2 sarà valutato come false se è uguale a Vector2(0, 0). Altrimenti, un Vector2 sarà sempre valutato come true.

Tutorial

Proprietà

float

x

0.0

float

y

0.0

Costruttori

Vector2

Vector2()

Vector2

Vector2(from: Vector2)

Vector2

Vector2(from: Vector2i)

Vector2

Vector2(x: float, y: float)

Metodi

Vector2

abs() const

float

angle() const

float

angle_to(to: Vector2) const

float

angle_to_point(to: Vector2) const

float

aspect() const

Vector2

bezier_derivative(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const

Vector2

bezier_interpolate(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const

Vector2

bounce(n: Vector2) const

Vector2

ceil() const

Vector2

clamp(min: Vector2, max: Vector2) const

Vector2

clampf(min: float, max: float) const

float

cross(with: Vector2) const

Vector2

cubic_interpolate(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float) const

Vector2

cubic_interpolate_in_time(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float, b_t: float, pre_a_t: float, post_b_t: float) const

Vector2

direction_to(to: Vector2) const

float

distance_squared_to(to: Vector2) const

float

distance_to(to: Vector2) const

float

dot(with: Vector2) const

Vector2

floor() const

Vector2

from_angle(angle: float) static

bool

is_equal_approx(to: Vector2) const

bool

is_finite() const

bool

is_normalized() const

bool

is_zero_approx() const

float

length() const

float

length_squared() const

Vector2

lerp(to: Vector2, weight: float) const

Vector2

limit_length(length: float = 1.0) const

Vector2

max(with: Vector2) const

int

max_axis_index() const

Vector2

maxf(with: float) const

Vector2

min(with: Vector2) const

int

min_axis_index() const

Vector2

minf(with: float) const

Vector2

move_toward(to: Vector2, delta: float) const

Vector2

normalized() const

Vector2

orthogonal() const

Vector2

posmod(mod: float) const

Vector2

posmodv(modv: Vector2) const

Vector2

project(b: Vector2) const

Vector2

reflect(line: Vector2) const

Vector2

rotated(angle: float) const

Vector2

round() const

Vector2

sign() const

Vector2

slerp(to: Vector2, weight: float) const

Vector2

slide(n: Vector2) const

Vector2

snapped(step: Vector2) const

Vector2

snappedf(step: float) const

Operatori

bool

operator !=(right: Vector2)

Vector2

operator *(right: Transform2D)

Vector2

operator *(right: Vector2)

Vector2

operator *(right: float)

Vector2

operator *(right: int)

Vector2

operator +(right: Vector2)

Vector2

operator -(right: Vector2)

Vector2

operator /(right: Vector2)

Vector2

operator /(right: float)

Vector2

operator /(right: int)

bool

operator <(right: Vector2)

bool

operator <=(right: Vector2)

bool

operator ==(right: Vector2)

bool

operator >(right: Vector2)

bool

operator >=(right: Vector2)

float

operator [](index: int)

Vector2

operator unary+()

Vector2

operator unary-()


Enumerazioni

enum Axis: 🔗

Axis AXIS_X = 0

Valore enumerato per l'asse X. Restituito da max_axis_index() e min_axis_index().

Axis AXIS_Y = 1

Valore enumerato per l'asse Y. Restituito da max_axis_index() e min_axis_index().


Costanti

ZERO = Vector2(0, 0) 🔗

Il vettore zero, un vettore con tutti i suoi componenti impostati su 0.

ONE = Vector2(1, 1) 🔗

Il vettore unitario, un vettore con tutti i suoi componenti impostati su 1.

INF = Vector2(inf, inf) 🔗

Il vettore infinito, un vettore con tutti i suoi componenti impostati su @GDScript.INF.

LEFT = Vector2(-1, 0) 🔗

Il vettore unitario sinistro. Rappresenta la direzione a sinistra.

RIGHT = Vector2(1, 0) 🔗

Il vettore unitario destro. Rappresenta la direzione a destra.

UP = Vector2(0, -1) 🔗

Il vettore unitario verso l'alto. Y è verso il basso in 2D, quindi questo vettore punta verso -Y.

DOWN = Vector2(0, 1) 🔗

Il vettore unitario verso il basso. Y è verso il basso in 2D, quindi questo vettore punta verso +Y.


Descrizioni delle proprietà

float x = 0.0 🔗

Il componente X del vettore. Accessibile anche tramite la posizione di indice [0].


float y = 0.0 🔗

Il componente Y del vettore. Accessibile anche tramite la posizione di indice [1].


Descrizioni dei costruttori

Vector2 Vector2() 🔗

Costruisce un Vector2 predefinito con tutti i componenti impostati su 0.


Vector2 Vector2(from: Vector2)

Costruisce un Vector2 come copia del Vector2 specificato.


Vector2 Vector2(from: Vector2i)

Costruisce un nuovo Vector2 da Vector2i.


Vector2 Vector2(x: float, y: float)

Costruisce un nuovo Vector2 dai parametri x e y forniti.


Descrizioni dei metodi

Vector2 abs() const 🔗

Restituisce un nuovo vettore con tutti i componenti in valori assoluti (ovvero positivi).


float angle() const 🔗

Restituisce l'angolo di questo vettore rispetto all'asse X positivo, o vettore (1, 0), in radianti.

Ad esempio, Vector2.RIGHT.angle() restituirà zero, Vector2.DOWN.angle() restituirà PI / 2 (un quarto di giro, o 90 gradi), e Vector2(1, -1).angle() restituirà -PI / 4 (un ottavo di giro negativo, o -45 gradi).

Illustrazione dell'angolo restituito.

Equivalente al risultato di @GlobalScope.atan2() quando chiamato con y e x del vettore come parametri: atan2(y, x).


float angle_to(to: Vector2) const 🔗

Restituisce l'angolo con segno rispetto al vettore indicato, in radianti.

Illustrazione dell'angolo restituito.


float angle_to_point(to: Vector2) const 🔗

Restituisce l'angolo tra la linea che collega i due punti e l'asse X, in radianti.

a.angle_to_point(b) equivale a fare (b - a).angle().

Illustrazione dell'angolo restituito.


float aspect() const 🔗

Restituisce le proporzioni di questo vettore, il rapporto tra x e y.


Vector2 bezier_derivative(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const 🔗

Restituisce la derivata in t sulla curva di Bézier definita da questo vettore e dai punti control_1, control_2 e end specificati.


Vector2 bezier_interpolate(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const 🔗

Restituisce il in t sulla curva di Bézier definita da questo vettore e dai punti control_1, control_2 e end specificati.


Vector2 bounce(n: Vector2) const 🔗

Restituisce il vettore "rimbalzato" da una linea definita dalla normale n perpendicolare alla linea.

Nota: bounce() esegue l'operazione che la maggior parte dei motori e framework chiama reflect().


Vector2 ceil() const 🔗

Restituisce un nuovo vettore con tutti i componenti arrotondati per eccesso (verso l'infinito positivo).


Vector2 clamp(min: Vector2, max: Vector2) const 🔗

Restituisce un nuovo vettore con tutti i suoi componenti limitati tra i componenti di min e max, eseguendo @GlobalScope.clamp() su ciascun componente.


Vector2 clampf(min: float, max: float) const 🔗

Restituisce un nuovo vettore con tutti i suoi componenti limitati tra min e max, eseguendo @GlobalScope.clamp() su ciascun componente.


float cross(with: Vector2) const 🔗

Restituisce l'analogo 2D del prodotto vettoriale per questo vettore e with.

Questa è l'area (con segno) del parallelogramma formato dai due vettori. Se il secondo vettore è in senso orario rispetto al primo vettore, il prodotto vettoriale è l'area positiva. Se è in senso antiorario, il prodotto vettoriale è l'area negativa. Se i due vettori sono paralleli, restituisce zero, il che lo rende utile per verificare se due vettori sono paralleli.

Nota: Il prodotto vettoriale non è definito matematicamente in 2D. Questo metodo incorpora i vettori 2D nel piano XY dello spazio 3D e utilizza il componente Z del loro prodotto vettoriale come analogo.


Vector2 cubic_interpolate(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float) const 🔗

Esegue un'interpolazione cubica tra questo vettore e b usando pre_a e post_b come manopole e restituisce il risultato nella posizione weight. weight è compreso tra 0,0 e 1,0, e rappresenta la quantità di interpolazione.


Vector2 cubic_interpolate_in_time(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float, b_t: float, pre_a_t: float, post_b_t: float) const 🔗

Esegue un'interpolazione cubica tra questo vettore e b usando pre_a e post_b come manopole e restituisce il risultato nella posizione weight. weight è compreso tra 0,0 e 1,0, e rappresenta la quantità di interpolazione.

Può eseguire un'interpolazione più fluida rispetto al cubic_interpolate() in base ai valori temporali.


Vector2 direction_to(to: Vector2) const 🔗

Restituisce il vettore normalizzato che punta da questo vettore a to. Ciò equivale a usare (b - a).normalized().


float distance_squared_to(to: Vector2) const 🔗

Restituisce la distanza al quadrato tra questo vettore e to.

Questo metodo è più veloce di distance_to(), quindi è preferibile se è necessario confrontare vettori o se è necessaria la distanza al quadrato per una formula.


float distance_to(to: Vector2) const 🔗

Restituisce la distanza tra questo vettore e to.


float dot(with: Vector2) const 🔗

Restituisce il prodotto scalare di questo vettore e with. Può essere utilizzato per confrontare l'angolo tra due vettori. Ad esempio, può essere utilizzato per determinare se un nemico è rivolto verso il giocatore.

Il prodotto scalare sarà 0 per un angolo retto (90 gradi), maggiore di 0 per angoli più stretti di 90 gradi e minore di 0 per angoli più larghi di 90 gradi.

Quando si utilizzano vettori unitari (normalizzati), il risultato sarà sempre compreso tra -1.0 (angolo di 180 gradi) quando i vettori sono rivolti in direzioni opposte e 1.0 (angolo di 0 gradi) quando i vettori sono allineati.

Nota: a.dot(b) è equivalente a b.dot(a).


Vector2 floor() const 🔗

Restituisce un nuovo vettore con tutti i componenti arrotondati per difetto (verso l'infinito negativo).


Vector2 from_angle(angle: float) static 🔗

Crea un Vector2 unitario ruotato all'angolo angle, in radianti. Ciò equivale a fare Vector2(cos(angle), sin(angle)) o Vector2.RIGHT.rotated(angle).

print(Vector2.from_angle(0)) # Stampa (1.0, 0.0)
print(Vector2(1, 0).angle()) # Stampa 0.0, che è l'angolo usato in precedenza.
print(Vector2.from_angle(PI / 2)) # Stampa (0.0, 1.0)

Nota: La lunghezza del Vector2 restituito è circa 1.0, ma non è garantito che sia esattamente 1.0 a causa di problemi di precisione in virgola mobile. Chiamare normalized() sul Vector2 restituito se si necessita di un vettore unitario.


bool is_equal_approx(to: Vector2) const 🔗

Restituisce true se questo vettore e to sono approssimativamente uguali, eseguendo @GlobalScope.is_equal_approx() su ciascun componente.


bool is_finite() const 🔗

Restituisce true se questo vettore è finito, eseguendo @GlobalScope.is_finite() su ciascun componente.


bool is_normalized() const 🔗

Restituisce true se il vettore è normalizzato, ovvero la sua lunghezza è approssimativamente uguale a 1.


bool is_zero_approx() const 🔗

Restituisce true se i valori di questo vettore sono approssimativamente zero, eseguendo @GlobalScope.is_zero_approx() su ciascun componente.

Questo metodo è più veloce di is_equal_approx() con un valore come vettore zero.


float length() const 🔗

Restituisce la lunghezza (magnitudine) di questo vettore.


float length_squared() const 🔗

Restituisce la lunghezza (magnitudine) al quadrato di questo vettore.

Questo metodo è più veloce di length(), quindi è preferibile se è necessario confrontare vettori o se è necessaria la distanza al quadrato per una formula.


Vector2 lerp(to: Vector2, weight: float) const 🔗

Restituisce il risultato dell'interpolazione lineare tra questo vettore e to per la quantità weight. weight è compreso tra 0.0 e 1.0, che rappresenta la quantità di interpolazione.


Vector2 limit_length(length: float = 1.0) const 🔗

Restituisce il vettore con una lunghezza massima limitandone la lunghezza a length. Se il vettore non è finito, il risultato è indefinito.


Vector2 max(with: Vector2) const 🔗

Restituisce il massimo, componente per componente, di questo vettore e with, equivalente a Vector2(maxf(x, with.x), maxf(y, with.y)).


int max_axis_index() const 🔗

Restituisce l'asse del valore più alto del vettore. Vedi le costanti AXIS_*. Se tutti i componenti sono uguali, questo metodo restituisce AXIS_X.


Vector2 maxf(with: float) const 🔗

Restituisce il massimo, componente per componente, di questo vettore e with, equivalente a Vector2(maxf(x, with), maxf(y, with)).


Vector2 min(with: Vector2) const 🔗

Restituisce il minimo, componente per componente, di questo vettore e with, equivalente a Vector2(minf(x, with.x), minf(y, with.y)).


int min_axis_index() const 🔗

Restituisce l'asse del valore più basso del vettore. Vedi le costanti AXIS_*. Se tutti i componenti sono uguali, questo metodo restituisce AXIS_Y.


Vector2 minf(with: float) const 🔗

Restituisce il minimo, componente per componente, di questo vettore e with, equivalente a Vector2(minf(x, with), minf(y, with)).


Vector2 move_toward(to: Vector2, delta: float) const 🔗

Restituisce un nuovo vettore spostato verso to per la quantità delta. Non andrà oltre il valore finale.


Vector2 normalized() const 🔗

Restituisce il risultato della scalatura del vettore a lunghezza unitaria. Equivalente a v / v.length(). Restituisce (0, 0) se v.length() == 0. Vedi anche is_normalized().

Nota: Questa funzione potrebbe restituire valori non corretti se la lunghezza del vettore passato è vicina a zero.


Vector2 orthogonal() const 🔗

Restituisce un vettore perpendicolare ruotato di 90 gradi in senso antiorario rispetto all'originale, con la stessa lunghezza.


Vector2 posmod(mod: float) const 🔗

Restituisce un vettore composto dal risultato di @GlobalScope.fposmod() dai componenti di questo vettore e mod.


Vector2 posmodv(modv: Vector2) const 🔗

Restituisce un vettore composto dal risultato di @GlobalScope.fposmod() dai componenti di questo vettore e i componenti di modv.


Vector2 project(b: Vector2) const 🔗

Restituisce un nuovo vettore risultante dalla proiezione di questo vettore sul vettore b. Il nuovo vettore risultante è parallelo a b. Vedi anche slide().

Nota: Se il vettore b è un vettore zero, i componenti del nuovo vettore risultante saranno @GDScript.NAN.


Vector2 reflect(line: Vector2) const 🔗

Restituisce il risultato della riflessione del vettore da una linea definita dal vettore di direzione line.

Nota: reflect() differisce da ciò che altri motori e framework chiamano reflect(). In altri motori, reflect() assume una direzione normale che è una direzione perpendicolare alla linea. In Godot, specifichi direttamente la direzione della linea. Vedi anche bounce() che fa ciò che la maggior parte dei motori chiama reflect().


Vector2 rotated(angle: float) const 🔗

Restituisce il risultato della rotazione di questo vettore di angle (in radianti). Vedi anche @GlobalScope.deg_to_rad().


Vector2 round() const 🔗

Restituisce un nuovo vettore con tutti i componenti arrotondati all'intero più vicino, con i casi a metà arrotondati lontani da zero.


Vector2 sign() const 🔗

Restituisce un nuovo vettore con ogni componente impostato su 1.0 se è positivo, -1.0 se è negativo e 0.0 se è zero. Il risultato è identico alla chiamata di @GlobalScope.sign() su ciascun componente.


Vector2 slerp(to: Vector2, weight: float) const 🔗

Restituisce il risultato dell'interpolazione lineare sferica tra questo vettore e to, per la quantità weight. weight è compreso tra 0,0 e 1,0, e rappresenta la quantità di interpolazione.

Questo metodo gestisce anche l'interpolazione delle lunghezze se i vettori passati hanno lunghezze diverse. Per il caso speciale di uno o entrambi i vettori passati con lunghezza zero, questo metodo si comporta come lerp().


Vector2 slide(n: Vector2) const 🔗

Restituisce un nuovo vettore risultante dallo scorrimento di questo vettore lungo una linea con la normale n. Il nuovo vettore risultante è perpendicolare a n ed è equivalente a questo vettore meno la sua proiezione su n. Vedi anche project().

Nota: Il vettore n deve essere normalizzato. Vedi anche normalized().


Vector2 snapped(step: Vector2) const 🔗

Restituisce un nuovo vettore con ciascun componente arrotondato al multiplo più vicino del componente corrispondente in step. Può anche essere utilizzato per arrotondare i componenti a un numero arbitrario di decimali.


Vector2 snappedf(step: float) const 🔗

Restituisce un nuovo vettore con ogni componente arrotondato al multiplo più vicino di step. Può anche essere utilizzato per arrotondare i componenti a un numero arbitrario di decimali.


Descrizioni degli operatori

bool operator !=(right: Vector2) 🔗

Restituisce true se i vettori non sono uguali.

Nota: A causa di errori di precisione per virgola mobile, considera invece utilizzare is_equal_approx(), che è più affidabile.

Nota: I vettori con componenti @GDScript.NAN non si comportano allo stesso modo di altri vettori. Perciò, i risultati di questa operazione potrebbero non essere accurati se valori NaN sono inclusi.


Vector2 operator *(right: Transform2D) 🔗

Trasforma inversamente (moltiplica) il Vector2 per la matrice di trasformazione Transform2D fornita, presupponendo che la base di trasformazione sia ortonormale (ovvero rotazione/riflessione vanno bene, ma scala/inclinazione no).

vector * transform è equivalente a transform.inverse() * vector. VediTransform2D.inverse().

Per trasformare per inverso una trasformazione affine (ad esempio con scala) può essere utilizzato transform.affine_inverse() * vector. Vedi Transform2D.affine_inverse().


Vector2 operator *(right: Vector2) 🔗

Moltiplica ogni componente del Vector2 per i componenti del Vector2 fornito.

print(Vector2(10, 20) * Vector2(3, 4)) # Stampa (30.0, 80.0)

Vector2 operator *(right: float) 🔗

Moltiplica ogni componente del Vector2i per il float fornito.


Vector2 operator *(right: int) 🔗

Moltiplica ogni componente del Vector2 per l'int fornito.


Vector2 operator +(right: Vector2) 🔗

Aggiunge ogni componente del Vector2 con i componenti del Vector2 fornito.

print(Vector2(10, 20) + Vector2(3, 4)) # Stampa (13.0, 24.0)

Vector2 operator -(right: Vector2) 🔗

Sottrae ogni componente del Vector2 dai componenti del Vector2 fornito.

print(Vector2(10, 20) - Vector2(3, 4)) # Stampa (7.0, 16.0)

Vector2 operator /(right: Vector2) 🔗

Divide ogni componente del Vector2 per i componenti del Vector2 fornito.

print(Vector2(10, 20) / Vector2(2, 5)) # Stampa (5.0, 4.0)

Vector2 operator /(right: float) 🔗

Divide ogni componente del Vector2 per il float fornito.


Vector2 operator /(right: int) 🔗

Divide ogni componente del Vector2 per l'int fornito.


bool operator <(right: Vector2) 🔗

Confronta due vettori Vector2 verificando prima se il valore X del vettore di sinistra è minore del valore X del vettore right. Se i valori X sono esattamente uguali, ripete questa verifica con i valori Y dei due vettori. Questo operatore è utile per ordinare i vettori.

Nota: I vettori con componenti @GDScript.NAN non si comportano come altri vettori. Pertanto, i risultati di questo operatore potrebbero non essere accurati se valori NAN sono inclusi.


bool operator <=(right: Vector2) 🔗

Confronta due vettori Vector2 verificando prima se il valore X del vettore di sinistra è minore o uguale al valore X del vettore right. Se i valori X sono esattamente uguali, ripete questa verifica con i valori Y dei due vettori. Questo operatore è utile per ordinare i vettori.

Nota: I vettori con componenti @GDScript.NAN non si comportano come altri vettori. Pertanto, i risultati di questo operatore potrebbero non essere accurati se valori NAN sono inclusi.


bool operator ==(right: Vector2) 🔗

Restituisce true se i vettori sono esattamente uguali.

Nota: A causa di errori di precisione per virgola mobile, considera invece utilizzare is_equal_approx(), che è più affidabile.

Nota: I vettori con componenti @GDScript.NAN non si comportano come altri vettori. Pertanto, i risultati di questo operatore potrebbero non essere accurati se valori NAN sono inclusi.


bool operator >(right: Vector2) 🔗

Confronta due vettori Vector2 verificando prima se il valore X del vettore di sinistra è maggiore del valore X del vettore right. Se i valori X sono esattamente uguali, ripete questa verifica con i valori Y dei due vettori. Questo operatore è utile per ordinare i vettori.

Nota: I vettori con componenti @GDScript.NAN non si comportano come altri vettori. Pertanto, i risultati di questo operatore potrebbero non essere accurati se valori NAN sono inclusi.


bool operator >=(right: Vector2) 🔗

Confronta due vettori Vector2 verificando prima se il valore X del vettore di sinistra è maggiore del valore X del vettore right. Se i valori X sono esattamente uguali, ripete questa verifica con i valori Y dei due vettori. Questo operatore è utile per ordinare i vettori.

Nota: I vettori con componenti @GDScript.NAN non si comportano come altri vettori. Pertanto, i risultati di questo operatore potrebbero non essere accurati se valori NAN sono inclusi.


float operator [](index: int) 🔗

Accede ai componenti del vettore attraverso il loro indice (index). v[0] è equivalente a v.x, mentre v[1] è equivalente a v.y.


Vector2 operator unary+() 🔗

Restituisce lo stesso valore come se + non ci fosse. Il + unario non fa nulla, ma a volte può rendere il tuo codice più leggibile.


Vector2 operator unary-() 🔗

Restituisce il valore negativo del Vector2. Equivale a scrivere Vector2(-v.x, -v.y). Questa operazione inverte la direzione del vettore mantenendo la stessa magnitudine. Con i float, il numero zero può essere sia positivo sia negativo.