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.
Sfida
FacileScrivi 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.
}
}
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
1Il tuo primo script
Ciao, UnityPosiziona il cuboMuovi a ogni frameRuota ogni secondoGuida con i tastiRiepilogo: guida il cubo4Vettori
Sommare vettoriDirezioniSpazio locale e spazio globaleVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni7Progetto: Acchiappa la stella
L'acchiappatoreUna stella cadente10Il ciclo di vita degli script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL’ordine del ciclo di vitaRipasso: logger del ciclo di vita2L'Inspector
Campi dell'InspectorSerializeFieldNumeri decimali e MathfAttributi dell'InspectorRiepilogo: Ascensore5Trasformazioni e gerarchia
Genitori e figliScalaGuarda gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita6Oggetti di gioco e componenti
Riferimenti nell’InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRipasso: interruttore della luce