Velocità diagonale
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 27 di 85.
Tieni premute insieme le frecce destra e su: gli assi grezzi forniscono la direzione (1, 0, 1). La sua lunghezza, .magnitude, è la radice quadrata di 1 + 1, circa 1,41. Un personaggio che si muove grazie a questo vettore percorre 1,41 unità in diagonale nello stesso tempo in cui ne percorre 1 andando dritto: il 41% più velocemente.
.normalized restituisce una copia di un vettore che punta nella stessa direzione ed è lunga 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à, fa muovere il vettore a quella velocità in qualsiasi direzione. Questa ape vola verso il fiore a 2 unità al secondo, sia che il fiore sia lontano sia che sia 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), perché zero non ha una direzione. v.normalized lascia v com'era; v.Normalize() modifica v stesso.
Sfida
FacileFai in modo che il personaggio si muova in diagonale alla stessa velocità.
- In
Update(), creaVector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));. - Aggiungi
direction.normalized * speed * Time.deltaTimeatransform.position.
Premi «Gioca» e tieni premute due frecce: il personaggio si muove in diagonale senza andare più veloce che in linea retta. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Frecce o WASD: muovi lungo x e z alla velocità speed, anche in diagonale.
}
}
Tutte le lezioni di Fondamenti di scripting in Unity
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity