Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Vector3, i vettori posizione e movimento

In uno spazio di lavoro tridimensionale abbiamo a che fare con vettori a tre dimensioni, ovvero che contengono 3 valori: X, Y e Z.
In uno spazio di lavoro tridimensionale abbiamo a che fare con vettori a tre dimensioni, ovvero che contengono 3 valori: X, Y e Z.
Link copiato negli appunti

In matematica, un vettore è un elemento di uno spazio vettoriale identificato da una sua grandezza dimensionale (modulo) una direzione e un verso. In Unity, lo spazio di lavoro è tridimensionale, per cui la maggior parte del tempo avremo a che fare con vettori a tre dimensioni, ovvero che contengono 3 valori.

I vettori tridimensionali possono venire usati per diversi scopi:

  • descrivere la posizione di un oggetto nello spazio 3D;
  • quantificare uno spostamento nello spazio;
  • esprimere la velocità che un oggetto ha in un dato momento;
  • la rotazione sui tre assi.

Unity mette a disposizione tre classi per lavorare con i vettori:

Classe Descrizione
Vector3 utilissima, come abbiamo appena detto, per lavorare nello spazio 3D
Vector2 utile per "ragionare" solo in due dimensioni
Vector4 che per ovvi motivi non rappresenta un posizionamento nello spazio, ma si usa per altri scopi

Naturalmente non esiste un Vector1, un "vettore monodimensionale": è semplicemente uno scalare e si può rappresentare con una semplice variabile di tipo float.

Vector3 è dunque composto da tre componenti, tutte di tipo float: x, y, z. Vediamo cosa rappresentano in Unity.

Componente Descrizione
Y la Y rappresenta la direzione verticale ed è orientata verso l'alto (i valori negativi indicano il verso opposto, in basso)
Z la Z è considerata "avanti" (o indietro)
X la X è la direzione orizzontale orientata verso "destra".

Tutto ciò essere diverso su altri programmi, dove a volte la Z è considerata "su" (come in 3D Studio Max), quindi è necessario fare attenzione.

Per creare un Vector3, è sufficiente usare la keyword new come al solito, specificando i tre valori nell'ordine x, y, z. Omettendo la z, Unity assumerà che il valore sia 0:

Vector3 movement = new Vector3(2f, 0f);
// è lo stesso che se avessimo scritto new Vector3(2f, 0f, 0f);

In questo esempio, stiamo esprimendo un vettore che punta dall'origine degli assi ad un punto che si trova lungo l'asse X, distante due unità. Qual è la lunghezza di questo vettore? Facile: 2.

Vector3 position = new Vector3(2f, 3f, -5f);

Quest'altro vettore indica un punto che si trova 2 unità lungo l'asse X, 3 lungo l'asse Y, e a 5 unità lungo quello Z, ma in direzione opposta (notare il simbolo "meno"). La lunghezza di questo vettore è meno facile da intuire, ma si può lasciare che sia Unity a calcolarla accedendo alla proprietà magnitude:

Debug.Log(position.magnitude);

Altra proprietà utile della classe Vector3 è normalized, ovvero la possibilità di ottenere la versione "normalizzata" del vettore. Se immaginiamo il vettore come una freccia che punta dal centro degli assi ad un punto nello spazio, la sua versione normalizzata sarà semplicemente lo un vettore che punta nella stessa direzione, ma di lunghezza 1. Va da sé che la magnitudo dei vettori normalizzati sarà sempre 1:

Vector3 position = new Vector3(2f, 3f, -5f);
Vector3 normalizedVersion = position.normalized;
Debug.Log(normalizedVersion.magnitude); //la console stamperà 1

Ti consigliamo anche