Menu
CoddyTech

Somma di vettori

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 24 di 85.

Un Vector3 può essere memorizzato in una variabile e due di essi si sommano con +: x si somma a x, y a y e z a z. È così che due spinte si combinano in un unico movimento. Questo pallone da spiaggia rotola in avanti di 2 unità al secondo mentre il vento lo spinge di 1 unità al secondo verso destra:

Vector3 roll = new Vector3(0, 0, 2);
Vector3 wind = new Vector3(1, 0, 0);

void Update()
{
    Vector3 move = roll + wind;   // (1, 0, 2)
    transform.position += move * Time.deltaTime;
}

Moltiplicare un vettore per un numero moltiplica ciascuna delle sue componenti: wind * 3 è (3, 0, 0), una tempesta, e move * Time.deltaTime trasforma un movimento al secondo nel movimento di questo fotogramma. Anche la sottrazione funziona componente per componente e a - b è il passo che porta dal punto b al punto a. Non esiste * tra due vettori: roll * wind non viene compilato.

challenge icon

Sfida

Facile

Il fiume trasporta la barca e la freccia su aggiunge il motore.

  1. In Update(), inizia con Vector3 move = current;.
  2. Mentre Input.GetKey(KeyCode.UpArrow) è vero, aggiungi motor a move con +=.
  3. Aggiungi move * Time.deltaTime a transform.position.

Premi «Gioca»: la barca va alla deriva verso destra e attraversa il fiume mentre tieni premuta la freccia su. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class Boat : MonoBehaviour
{
    public Vector3 current = new Vector3(0, 0, 0);
    public Vector3 motor = new Vector3(0, 0, 0);

    void Update()
    {
        // La corrente trasporta sempre la barca.
        // Finché si tiene premuta la freccia su, anche il motore spinge.
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity