Assi
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 20 di 85.
Input.GetAxis("Horizontal") trasforma le frecce sinistra e destra (e A e D) in un unico numero da -1 a 1: -1 per sinistra, 1 per destra, 0 per nessuna delle due. Input.GetAxis("Vertical") fa lo stesso con le frecce giù e su (S e W). Una chiamata sostituisce due if e una levetta del gamepad controlla gli stessi assi senza codice aggiuntivo.
Il numero non cambia di colpo. Con le impostazioni predefinite di Unity, si sposta verso il valore desiderato a una velocità di 3 al secondo, quindi ci vuole un terzo di secondo per raggiungere 1 dopo la pressione e un altro terzo per tornare a 0 dopo il rilascio. Questa gradualità fa accelerare dolcemente questo hovercraft e lo fa scivolare fino a fermarsi:
public float speed = 5f;
void Update()
{
float h = Input.GetAxis("Horizontal");
transform.position += new Vector3(h * speed * Time.deltaTime, 0, 0);
}Input.GetAxisRaw("Horizontal") salta la gradualità: a ogni fotogramma restituisce esattamente -1, 0 oppure 1, così il movimento inizia e si ferma all'istante. Usa GetAxis per ciò che dovrebbe dare una sensazione di pesantezza e GetAxisRaw per controlli più immediati. Se tieni premute entrambe le frecce, entrambi i metodi restituiscono 0, perché le due direzioni si annullano. (In un progetto Unity 6, l'impostazione Active Input Handling descritta in Guida con i tasti si applica anche agli assi.)
Sfida
FacileFai muovere il rover in modo reattivo, senza accelerazione graduale.
- In
Update(), leggifloat h = Input.GetAxisRaw("Horizontal");efloat v = Input.GetAxisRaw("Vertical");. - Aggiungi
new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime)atransform.position.
Premi «Gioca», fai clic sul gioco e guida con le frecce o con WASD: il rover parte e si ferma subito. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Horizontal controlla il movimento lungo x, Vertical lungo z, senza smussamento.
}
}
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