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...
Vector3
Un vettore 3D che utilizza coordinate in virgola mobile.
Descrizione
Una struttura a 3 elementi che può essere utilizzata per rappresentare coordinate 3D o qualsiasi altra tripletta 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 Vector3i per la sua controparte con numeri interi.
Nota: In un contesto booleano, un Vector3 sarà valutato come false se è uguale a Vector3(0, 0, 0). Altrimenti, un Vector3 sarà sempre valutato come true.
Tutorial
Proprietà
|
||
|
||
|
Costruttori
Vector3() |
|
Metodi
abs() const |
|
bezier_derivative(control_1: Vector3, control_2: Vector3, end: Vector3, t: float) const |
|
bezier_interpolate(control_1: Vector3, control_2: Vector3, end: Vector3, t: float) const |
|
ceil() const |
|
cubic_interpolate(b: Vector3, pre_a: Vector3, post_b: Vector3, weight: float) const |
|
cubic_interpolate_in_time(b: Vector3, pre_a: Vector3, post_b: Vector3, weight: float, b_t: float, pre_a_t: float, post_b_t: float) const |
|
direction_to(to: Vector3) const |
|
distance_squared_to(to: Vector3) const |
|
distance_to(to: Vector3) const |
|
floor() const |
|
inverse() const |
|
is_equal_approx(to: Vector3) const |
|
is_finite() const |
|
is_normalized() const |
|
is_zero_approx() const |
|
length() const |
|
length_squared() const |
|
limit_length(length: float = 1.0) const |
|
max_axis_index() const |
|
min_axis_index() const |
|
move_toward(to: Vector3, delta: float) const |
|
normalized() const |
|
octahedron_decode(uv: Vector2) static |
|
octahedron_encode() const |
|
round() const |
|
sign() const |
|
signed_angle_to(to: Vector3, axis: Vector3) const |
|
Operatori
operator !=(right: Vector3) |
|
operator *(right: Basis) |
|
operator *(right: Quaternion) |
|
operator *(right: Transform3D) |
|
operator *(right: Vector3) |
|
operator *(right: float) |
|
operator *(right: int) |
|
operator +(right: Vector3) |
|
operator -(right: Vector3) |
|
operator /(right: Vector3) |
|
operator /(right: float) |
|
operator /(right: int) |
|
operator <(right: Vector3) |
|
operator <=(right: Vector3) |
|
operator ==(right: Vector3) |
|
operator >(right: Vector3) |
|
operator >=(right: Vector3) |
|
operator [](index: int) |
|
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().
Axis AXIS_Z = 2
Valore enumerato per l'asse Z. Restituito da max_axis_index() e min_axis_index().
Costanti
ZERO = Vector3(0, 0, 0) 🔗
Il vettore zero, un vettore con tutti i suoi componenti impostati su 0.
ONE = Vector3(1, 1, 1) 🔗
Il vettore unitario, un vettore con tutti i suoi componenti impostati su 1.
INF = Vector3(inf, inf, inf) 🔗
Il vettore infinito, un vettore con tutti i suoi componenti impostati su @GDScript.INF.
LEFT = Vector3(-1, 0, 0) 🔗
Il vettore unitario sinistro. Rappresenta la direzione locale di sinistra e la direzione globale dell'ovest.
RIGHT = Vector3(1, 0, 0) 🔗
Il vettore unitario destro. Rappresenta la direzione locale di destra e la direzione globale dell'est.
UP = Vector3(0, 1, 0) 🔗
Il vettore unitario verso l'alto.
DOWN = Vector3(0, -1, 0) 🔗
Il vettore unitario verso il basso.
FORWARD = Vector3(0, 0, -1) 🔗
Il vettore unitario anteriore. Rappresenta la direzione locale in avanti e la direzione globale del nord. Tieni presente che la direzione in avanti di luci, telecamere, ecc. è diversa dalle risorse 3D come i personaggi, che per convenzione sono rivolti verso la telecamera. Usa MODEL_FRONT e costanti simili quando lavori nello spazio delle risorse 3D.
BACK = Vector3(0, 0, 1) 🔗
Il vettore unitario posteriore. Rappresenta la direzione locale del retro e la direzione globale del sud.
MODEL_LEFT = Vector3(1, 0, 0) 🔗
Vettore unitario che punta verso il lato sinistro delle risorse 3D importate.
MODEL_RIGHT = Vector3(-1, 0, 0) 🔗
Vettore unitario che punta verso il lato destro delle risorse 3D importate.
MODEL_TOP = Vector3(0, 1, 0) 🔗
Vettore unitario che punta verso il lato superiore (su) delle risorse 3D importate.
MODEL_BOTTOM = Vector3(0, -1, 0) 🔗
Vettore unitario che punta verso il lato inferiore (giù) delle risorse 3D importate.
MODEL_FRONT = Vector3(0, 0, 1) 🔗
Vettore unitario che punta verso il lato anteriore (rivolto in avanti) delle risorse 3D importate.
MODEL_REAR = Vector3(0, 0, -1) 🔗
Vettore unitario che punta verso il lato posteriore (retro) delle risorse 3D importate.
Descrizioni delle proprietà
Il componente X del vettore. Accessibile anche tramite la posizione di indice [0].
Il componente Y del vettore. Accessibile anche tramite la posizione di indice [1].
Il componente Z del vettore. Accessibile anche tramite la posizione di indice [2].
Descrizioni dei costruttori
Costruisce un Vector3 predefinito con tutti i componenti impostati su 0.
Vector3 Vector3(from: Vector3)
Costruisce un Vector3 come copia del Vector3 specificato.
Vector3 Vector3(from: Vector3i)
Costruisce un nuovo Vector3 da Vector3i.
Vector3 Vector3(x: float, y: float, z: float)
Restituisce un Vector3 con i componenti forniti.
Descrizioni dei metodi
Restituisce un nuovo vettore con tutti i componenti in valori assoluti (ovvero positivi).
float angle_to(to: Vector3) const 🔗
Restituisce l'angolo minimo senza segno verso il vettore fornito, in radianti.
Vector3 bezier_derivative(control_1: Vector3, control_2: Vector3, end: Vector3, 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.
Vector3 bezier_interpolate(control_1: Vector3, control_2: Vector3, end: Vector3, 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.
Vector3 bounce(n: Vector3) const 🔗
Restituisce il vettore "rimbalzato" da un piano definito dalla normale n.
Nota: bounce() esegue l'operazione che la maggior parte dei motori e framework chiamano reflect().
Restituisce un nuovo vettore con tutti i componenti arrotondati per eccesso (verso l'infinito positivo).
Vector3 clamp(min: Vector3, max: Vector3) const 🔗
Restituisce un nuovo vettore con tutti i suoi componenti limitati tra i componenti di min e max, eseguendo @GlobalScope.clamp() su ciascun componente.
Vector3 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.
Vector3 cross(with: Vector3) const 🔗
Restituisce il prodotto vettoriale di questo vettore e with.
Questo restituisce un vettore perpendicolare sia a questo sia a with, che sarebbe il vettore normale del piano definito dai due vettori. Poiché ci sono due vettori di questo tipo, in direzioni opposte, questo metodo restituisce il vettore definito da un sistema di coordinate destrorso. Se i due vettori sono paralleli, questo restituisce un vettore vuoto, il che lo rende utile per testare se due vettori sono paralleli.
Vector3 cubic_interpolate(b: Vector3, pre_a: Vector3, post_b: Vector3, 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.
Vector3 cubic_interpolate_in_time(b: Vector3, pre_a: Vector3, post_b: Vector3, 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.
Vector3 direction_to(to: Vector3) const 🔗
Restituisce il vettore normalizzato che punta da questo vettore a to. Ciò equivale a usare (b - a).normalized().
float distance_squared_to(to: Vector3) const 🔗
Returns the squared Euclidean distance between this vector and to.
This method runs faster than distance_to(), so prefer it if you need to compare vectors or need the squared distance for some formula.
float distance_to(to: Vector3) const 🔗
Returns the Euclidean distance between this vector and to.
float dot(with: Vector3) 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).
Restituisce un nuovo vettore con tutti i componenti arrotondati per difetto (verso l'infinito negativo).
Restituisce l'inverso del vettore. È lo stesso di Vector3(1.0 / v.x, 1.0 / v.y, 1.0 / v.z).
bool is_equal_approx(to: Vector3) const 🔗
Restituisce true se questo vettore e to sono approssimativamente uguali, eseguendo @GlobalScope.is_equal_approx() su ciascun componente.
Restituisce true se questo vettore è finito, eseguendo @GlobalScope.is_finite() su ciascun componente.
Restituisce true se il vettore è normalizzato, ovvero la sua lunghezza è approssimativamente uguale a 1.
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.
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.
Vector3 lerp(to: Vector3, 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.
Vector3 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.
Vector3 max(with: Vector3) const 🔗
Restituisce il massimo, componente per componente, di questo vettore e with, equivalente a Vector3(maxf(x, with.x), maxf(y, with.y), maxf(z, with.z)).
Restituisce l'asse del valore più alto del vettore. Vedi le costanti AXIS_*. Se tutti i componenti sono uguali, questo metodo restituisce AXIS_X.
Vector3 maxf(with: float) const 🔗
Restituisce il massimo, componente per componente, di questo vettore e with, equivalente a Vector3(maxf(x, with), maxf(y, with), maxf(z, with)).
Vector3 min(with: Vector3) const 🔗
Restituisce il minimo, componente per componente, di questo vettore e with, equivalente a Vector3(minf(x, with.x), minf(y, with.y), minf(z, with.z)).
Restituisce l'asse del valore più basso del vettore. Vedi le costanti AXIS_*. Se tutti i componenti sono uguali, questo metodo restituisce AXIS_Z.
Vector3 minf(with: float) const 🔗
Restituisce il minimo, componente per componente, di questo vettore e with, equivalente a Vector3(minf(x, with), minf(y, with), minf(z, with)).
Vector3 move_toward(to: Vector3, delta: float) const 🔗
Restituisce un nuovo vettore spostato verso to per la quantità delta. Non andrà oltre il valore finale.
Restituisce il risultato della scalatura del vettore a lunghezza unitaria. Equivalente a v / v.length(). Restituisce (0, 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.
Vector3 octahedron_decode(uv: Vector2) static 🔗
Restituisce Vector3 da una forma compressa ottaedrica creata attraverso octahedron_encode() (memorizzata come Vector2).
Vector2 octahedron_encode() const 🔗
Restituisce la forma codificata ottaedrica (oct32) di questo Vector3 come Vector2. Poiché un Vector2 occupa 1/3 di memoria in meno rispetto a Vector3, questa forma di compressione può essere utilizzata per passare quantità maggiori di Vector3 normalizzati (vedi normalized()) senza aumentare i requisiti di archiviazione o memoria. Vedi anche octahedron_decode().
Nota: octahedron_encode() può essere utilizzato solo per vettori da normalized(). octahedron_encode() non verifica se questo Vector3 è normalizzato e restituirà un valore che non si decomprime al valore originale se Vector3 non è normalizzato.
Nota: La compressione ottaedrica è con perdita di dati, sebbene le differenze visive siano raramente percepibili in scenari del mondo reale.
Basis outer(with: Vector3) const 🔗
Restituisce il prodotto esterno con il vettore with.
Vector3 posmod(mod: float) const 🔗
Restituisce un vettore composto dal risultato di @GlobalScope.fposmod() dai componenti di questo vettore e mod.
Vector3 posmodv(modv: Vector3) const 🔗
Restituisce un vettore composto dal risultato di @GlobalScope.fposmod() dai componenti di questo vettore e i componenti di modv.
Vector3 project(b: Vector3) 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.
Vector3 reflect(n: Vector3) const 🔗
Restituisce il risultato della riflessione del vettore attraverso un piano definito dal vettore normale n.
Nota: reflect() differisce da ciò che altri motori e framework chiamano reflect(). In altri motori, reflect() restituisce il risultato del vettore riflesso dal piano specificato. La riflessione passa quindi attraverso la normale specificata. Mentre in Godot la riflessione passa attraverso il piano e può essere pensata come un rimbalzo sulla normale. Vedi anche bounce() che fa ciò che la maggior parte dei motori chiama reflect().
Vector3 rotated(axis: Vector3, angle: float) const 🔗
Restituisce il risultato della rotazione di questo vettore attorno a un determinato asse di angle (in radianti). L'asse deve essere un vettore normalizzato. Vedi anche @GlobalScope.deg_to_rad().
Restituisce un nuovo vettore con tutti i componenti arrotondati all'intero più vicino, con i casi a metà arrotondati lontani da zero.
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.
float signed_angle_to(to: Vector3, axis: Vector3) const 🔗
Restituisce l'angolo con segno al vettore specificato, in radianti. Il segno dell'angolo è positivo in senso antiorario e negativo in senso orario se visto dal lato specificato dall'asse axis.
Vector3 slerp(to: Vector3, 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().
Vector3 slide(n: Vector3) const 🔗
Restituisce un nuovo vettore risultante dallo scorrimento di questo vettore lungo un piano 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().
Vector3 snapped(step: Vector3) 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.
Vector3 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: Vector3) 🔗
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.
Vector3 operator *(right: Basis) 🔗
Trasforma inversamente (moltiplica) il Vector3 per la matrice Basis fornita, presupponendo che la base 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().
Vector3 operator *(right: Quaternion) 🔗
Trasforma inversamente (moltiplica) il Vector3 per il Quaternion fornito.
vector * quaternion è equivalente a quaternion.inverse() * vector. Vedi Quaternion.inverse().
Vector3 operator *(right: Transform3D) 🔗
Trasforma inversamente (moltiplica) il Vector3 per la matrice di trasformazione Transform3D 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().
Vector3 operator *(right: Vector3) 🔗
Moltiplica ogni componente del Vector3 per i componenti del Vector3 fornito.
print(Vector3(10, 20, 30) * Vector3(3, 4, 5)) # Stampa (30.0, 80.0, 150.0)
Vector3 operator *(right: float) 🔗
Moltiplica ogni componente del Vector3 per il float fornito.
Vector3 operator *(right: int) 🔗
Moltiplica ogni componente del Vector3 per l'int fornito.
Vector3 operator +(right: Vector3) 🔗
Aggiunge ogni componente del Vector3 con i componenti del Vector3 fornito.
print(Vector3(10, 20, 30) + Vector3(3, 4, 5)) # Stampa (13.0, 24.0, 35.0)
Vector3 operator -(right: Vector3) 🔗
Sottrae ogni componente del Vector3 dai componenti del Vector3 fornito.
print(Vector3(10, 20, 30) - Vector3(3, 4, 5)) # Stampa (7.0, 16.0, 25.0)
Vector3 operator /(right: Vector3) 🔗
Divide ogni componente del Vector3 per i componenti del Vector3 fornito.
print(Vector3(10, 20, 30) / Vector3(2, 5, 3)) # Stampa (5.0, 4.0, 10.0)
Vector3 operator /(right: float) 🔗
Divide ogni componente del Vector3 per il float fornito.
Vector3 operator /(right: int) 🔗
Divide ogni componente del Vector3 per l'float fornito.
bool operator <(right: Vector3) 🔗
Confronta due vettori Vector3 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 e poi con i valori Z. 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: Vector3) 🔗
Confronta due vettori Vector3 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 e poi con i valori Z. 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: Vector3) 🔗
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: Vector3) 🔗
Confronta due vettori Vector3 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 e poi con i valori Z. 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: Vector3) 🔗
Confronta due vettori Vector3 verificando prima se il valore X del vettore di sinistra è maggiore 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 e poi con i valori Z. 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, v[1] è equivalente a v.y, e v[2] è equivalente a v.z.
Restituisce lo stesso valore come se + non ci fosse. Il + unario non fa nulla, ma a volte può rendere il tuo codice più leggibile.
Restituisce il valore negativo del Vector3. Equivale a scrivere Vector3(-v.x, -v.y, -v.z). Questa operazione inverte la direzione del vettore mantenendo la stessa magnitudine. Con i float, il numero zero può essere sia positivo sia negativo.