Menu
CoddyTech

Velocità diagonale

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 20 di 67.

Tieni premute insieme le frecce destra e su: gli assi grezzi indicano la direzione (1, 0, 1). La sua lunghezza, .magnitude, è la radice quadrata di 1 + 1, circa 1,41. Un personaggio che si muove con questo vettore percorre 1,41 unità in diagonale nello stesso tempo in cui ne percorre 1 in linea retta: il 41% più velocemente.

.normalized restituisce una copia di un vettore che punta nella stessa direzione ed è lungo esattamente 1 unità: (1, 0, 1) diventa circa (0,71, 0, 0,71) e (0, 0, 5) diventa (0, 0, 1). Moltiplicato per una velocità, si muove a quella velocità in qualsiasi direzione. Questa ape vola verso il fiore a 2 unità al secondo, che il fiore sia lontano o vicino; senza .normalized, volerebbe più velocemente quanto più il fiore è lontano:

public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;

void Update()
{
    Vector3 toFlower = flower - transform.position;
    transform.position += toFlower.normalized * speed * Time.deltaTime;
}

Vector3.zero.normalized rimane (0, 0, 0), poiché zero non ha una direzione. v.normalized lascia v com'era; v.Normalize() modifica v stesso.

challenge icon

Sfida

Facile

Scrivi il movimento del personaggio. Le frecce (o WASD), lette con gli assi grezzi, lo spostano a sinistra e a destra lungo x e in alto e in basso lungo z. Si muove a speed unità al secondo in ogni direzione, diagonali incluse, parte e si ferma all’istante e resta fermo quando non viene tenuto premuto alcun tasto.

Premi Play, cammina dritto e in diagonale, poi premi Check.

Provalo tu

using UnityEngine;

public class Walker : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // Frecce o WASD: muoviti lungo x e z alla velocità speed, mantenendola costante anche in diagonale.
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di scripting in Unity