Unity - Script di movimento di base
In questa lezione, scriveremo il codice che fa muovere un gameObject su, giù, sinistra e destra in base all'input dell'utente. Questo dovrebbe aiutarci a comprendere più facilmente il flusso di lavoro dello scripting di Unity.
Ricorda che ogni GameObject ha almeno un componente: Transform. La particolarità è che la trasformazione di un gameObject si presenta anche come variabili nel lato script di Unity, quindi possiamo modificarlo tramite codice. Anche questo non è limitato alla trasformazione; tutti i componenti in Unity hanno proprietà accessibili tramite variabili nello script.
Cominciamo con il nostro copione di movimento. Crea un nuovo script e chiamalo "Movimento".
Ora apri lo script e dovresti vedere le stesse cose che hai visto nell'ultima lezione.
Creiamo una variabile float pubblica denominata speed. Fare una variabilepublic in Unity ha un grande vantaggio:
La variabile si presenta come un campo modificabile all'interno dell'editor, quindi non è necessario regolare manualmente i valori nel codice.
public class Movement : MonoBehaviour {
public float speed;
}
Se salviamo questo script senza toccare gli altri metodi, dovrebbe essere compilato in Unity.
(Puoi vedere quando sta compilando
Il prossimo, drag and droplo script dagli Assets al GameObject. Se lo fai correttamente, questo è quello che dovresti vedere nelle proprietà del GameObject -
Poiché il valore della velocità è regolabile e non deve essere cambiato nel codice tutto il tempo, possiamo usare il metodo update () invece di start ().
Consideriamo ora gli obiettivi per il metodo Update:
Verificare l'input dell'utente.
Se è presente un input dell'utente, leggere le istruzioni di input.
Modificare i valori di posizione della trasformazione dell'oggetto in base alla sua velocità e direzione. Per fare ciò, aggiungeremo il seguente codice:
void Update() {
float h = Input.GetAxisRaw(“Horizontal”);
float v = Input.GetAxisRaw(“Vertical”);
gameObject.transform.position = new Vector2 (transform.position.x + (h * speed),
transform.position.y + (v * speed));
Parliamo ora del codice in breif.
Prima di tutto, creiamo una variabile in virgola mobile denominata h (per orizzontale), e il suo valore è dato da Input.GetAxisRawmetodo. Questo metodo restituisce -1, 0 o 1 a seconda del tasto premuto dal giocatore sulle frecce su / giù / sinistra / destra.
La classe Input è responsabile di ricevere l'input dall'utente sotto forma di pressioni di tasti, input del mouse, input del controller e così via. Il metodo GetAxisRaw è leggermente più difficile da capire, quindi torneremo su questo più tardi.
Avanti, siamo updating la posizione del nostro gameObject in una nuova posizione definita creando un nuovo Vector2. Vector2 accetta 2 parametri, che sono i suoix and yvalori rispettivamente. Per il valore x, forniamo la somma degli oggetticurrent posizione e la sua speed, aggiungendo effettivamente una certa quantità ad ogni fotogramma premuto il tasto nella sua posizione.
Salva questo script e torna a Unity. Unity aggiornerà automaticamente tutti gli script una volta compilato correttamente, quindi non è necessario ricollegare lo script ancora e ancora.
Ora che hai finito, modifica il valore di speednelle proprietà del GameObject per dire 0.8. Questo è importante perché un valore più alto farà muovere il giocatore troppo velocemente.
Ora fai clic su Play e guarda il tuo primo piccolo gioco in azione!
Prova a premere i tasti freccia e a muoverti. Per interrompere il gioco, premi nuovamente Riproduci. Puoi persino regolare la velocità in tempo reale in modo da non doverlo fermare e avviare tutto il tempo.
Nella prossima lezione impareremo a conoscere i corpi rigidi e le collisioni.