Sei nuovo di Unity? Stai cercando di imparare come ricevere input dai giocatori e spostare i personaggi sullo schermo? Abbiamo creato questa guida per mostrare tre diversi modi in cui puoi controllare i movimenti dei giocatori in Unity.

Che tu sia un principiante della programmazione o che tu abbia un po' di esperienza alle spalle, questo tutorial di C# ti metterà in piedi e i tuoi personaggi saranno al loro fianco.

Iniziamo.

Movimento dei giocatori nell'unità: raccolta di input

Per prima cosa, devi sapere come catturare gli input dell'utente e trasformarli in movimento nel gioco. Unity lo rende abbastanza facile fintanto che sai dove cercare.

Con Unity aperto, fare clic su Modificare nella barra degli strumenti in alto. Ora seleziona Impostazioni del progetto. Dall'elenco a sinistra, scegli Gestore di input. Selezionare Assi, popolando l'elenco dei valori di input. Avrai voglia di guardare Orizzontale e Verticale per il movimento di base.

Utilizzerai questi assi insieme a Ingresso. GetAxisRaw(); per il movimento di base nella sezione successiva.

instagram viewer

Movimento dei giocatori in unità usando un corpo rigido e un collisore

Ora che conosci i nomi degli assi, puoi usarli per controllare il movimento del giocatore.

Nei tuoi progetti Unity Gerarchia visualizzare, fare clic con il pulsante destro del mouse e selezionare Oggetto 3D > Capsula per creare ciò a cui darai movimento. Assicurati di usare la stessa tattica per creare un terreno Aereo su cui poggiare la tua Capsule.

Assicurati di ripristinare il Trasformare valore di entrambi gli oggetti e sposta la tua Capsule in modo che sia in piedi sul Piano. Rinomina la tua Capsule in qualcosa come "Giocatore" per una facile identificazione.

Imparentato: I 5 linguaggi di sviluppo del gioco Unity: quali dovresti imparare?

Clicca sul Giocatore oggetto e, nel Ispettore visualizza, scorri verso il basso fino a Aggiungi componente. Aggiungere un Corpo rigido, quindi aggiungere un altro componente come a Collisore di capsule questa volta. Avrai bisogno di questi componenti per aggiungere fisica, e quindi movimento, al tuo Giocatore.

Quindi, fai clic con il pulsante destro del mouse nel tuo Script cartella e Creare una nuova Script C#. Assegna a questo script un nome simile a "PlayerMovement". Se hai intenzione di aggiungere più tipi di movimento per diversi personaggi o tipi di controller, ti consigliamo di creare molti script diversi per ogni tipo di movimento. Per ora, ci concentreremo sulle basi e utilizzeremo uno script.

Guarda anche: Che cos'è la programmazione modulare in Unity e perché è importante?

Fare doppio clic sullo script per aprirlo. Ti verrà incontro uno script Unity predefinito:

usando Sistema. Collezioni;
usando Sistema. Collezioni. Generico;
usando UnityEngine;
public class PlayerMovement: MonoBehaviour
{
// Start viene chiamato prima del primo aggiornamento del frame
inizio vuoto()
{

}
// L'aggiornamento viene chiamato una volta per frame
void Aggiorna()
{

}
}

Puoi eliminare usando Sistema. Collezioni; e usandoSistema. Collezioni. Generico; poiché non sono necessari per questo script.

Con quello fuori mano, concentrati

public class PlayerMovement: MonoBehaviour {

per adesso. All'interno della parentesi graffa di apertura, creare a galleggiante pubblico variabile denominata velocità o qualcosa di simile. Questo velocità variabile è un moltiplicatore che controllerà quanto velocemente il nostro Giocatore si sposta dopo un po' di programmazione. Per ora, imposta velocità uguale a qualcosa di simile 10 segg.

Devi anche consentire a Unity che c'è un Rigidbody da manipolare in questo script. Questo viene fatto con la parola chiave Corpo rigido e un nome di variabile: sceglieremo noi rb.

public class PlayerMovement: MonoBehaviour
{
velocità del galleggiante pubblico = 10f; //Controlla il moltiplicatore di velocità

corpo rigido rb; //Dice allo script che esiste un rigidbody, possiamo usare la variabile rb per fare riferimento ad esso in un ulteriore script

Questo è tutto ciò che devi aggiungere in questa sezione. Ora, passa a inizio vuoto(). All'avvio del gioco, è necessario impostare il rb variabile uguale a Corpo rigido sul Giocatore così:

inizio vuoto()
{
rb = Ottieni componente(); //rb è uguale al rigidbody del lettore
}

Ora, dai un'occhiata al void Aggiorna() funzione. Questa è la funzione che utilizzerai per acquisire costantemente input dalle tastiere, dai controller, ecc. Ricorda quando hai controllato il Impostazioni del progetto per Assi di ingresso? Li userai qui.

void Aggiorna()
{
float xMove = Input. GetAxisRaw("Orizzontale"); // La chiave d cambia il valore in 1, una chiave cambia il valore in -1
float zMove = Input. GetAxisRaw("Verticale"); // la chiave w cambia il valore in 1, la chiave s cambia il valore in -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * velocità; // Crea la velocità nella direzione del valore uguale alla pressione del tasto (WASD). rb.velocity.y si occupa della caduta + del salto impostando la velocità su y.

}

Non preoccuparti se ti senti sopraffatto dal salto nel codice; lo spiegheremo passo dopo passo. Innanzitutto, crea un galleggiante variabile con un nome come xSpostae impostarlo uguale a Ingresso. GetAxisRaw("Orizzontale");

Ingresso. GetAxisRaw(); è il modo in cui Unity registra gli input del lettore da Assi hai trovato nel Impostazioni del progetto. Puoi leggere di più a riguardo in Documentazione ufficiale di Unity. "Orizzontale" viene dal Asse orizzontale nome in Unità. Questo asse controlla il movimento sinistro e destro con i tasti "a" e "d".

Come probabilmente puoi intuire ormai, float zMove = Input. GetAxisRaw("Verticale"); fa la stessa cosa ma per i tasti "w" e "s".

Imparentato: I migliori tutorial di Unity 3D per principianti

Successivamente, lo metterai velocità variabile che hai creato in gioco e completa l'ultimo pezzo del puzzle per il movimento del giocatore in Unity.

rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * velocità; // Crea la velocità nella direzione del valore uguale alla pressione del tasto (WASD). rb.velocity.y si occupa della caduta + del salto impostando la velocità su y.

Torna da Unity Ispettore vista per il Giocatore oggetto. Dai un'occhiata al Corpo rigido-sotto Informazioni, vedrai un valore Velocità. Questo è il valore con cui stai mirando rb.velocity.

nuovo Vector3(xMove, rb.velocity.y, zMove) * velocità, crea un nuovo vettore con i valori x, yez forniti, quindi moltiplica il valore del vettore per velocità.

Assicurati di trascinare il Movimento dei giocatori script sul Giocatore oggetto in Unity, e il gioco è fatto! Complessivamente, hai uno script C# funzionante che prende gli input dal giocatore e li trasforma nel movimento del personaggio in Unity.

Ecco il codice finito:

usando UnityEngine;
public class PlayerMovement: MonoBehaviour
{
velocità del galleggiante pubblico = 10f; //Controlla il moltiplicatore di velocità
corpo rigido rb; //Dice allo script che esiste un rigidbody, possiamo usare la variabile rb per fare riferimento ad esso in un ulteriore script

// Start viene chiamato prima del primo aggiornamento del frame
inizio vuoto()
{
rb = Ottieni componente(); //rb è uguale al rigidbody del lettore
}

// L'aggiornamento viene chiamato una volta per frame
void Aggiorna()
{
float xMove = Input. GetAxisRaw("Orizzontale"); // La chiave d cambia il valore in 1, una chiave cambia il valore in -1
float zMove = Input. GetAxisRaw("Verticale"); // la chiave w cambia il valore in 1, la chiave s cambia il valore in -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * velocità; // Crea la velocità nella direzione del valore uguale alla pressione del tasto (WASD). rb.velocity.y si occupa della caduta + del salto impostando la velocità su y.

}
}

Nota: Se trovi che il tuo personaggio fa più flop che altro, assicurati di bloccare la rotazione del giocatore nel Ispettore.

Impara e guadagna di più in Unity

Ora che sai come programmare il movimento del giocatore in Unity con i componenti Rigidbody e Collider, cosa imparerai dopo? Forse espandere il controller di movimento per aggiungere cose come lo scorrimento, il doppio salto e altro si rivelerebbe divertente e coinvolgente.

Unity Learn è pieno zeppo di argomenti interessanti per migliorare le tue abilità di sviluppo del gioco. Crediamo che uno dei fattori più importanti per ampliare la tua conoscenza della programmazione sia imparare qualcosa di nuovo ogni giorno. Rimani curioso e felice hacking!

Unity Learn è il modo più semplice per padroneggiare lo sviluppo di giochi

Vuoi iniziare a sviluppare i tuoi giochi? Unity Learn è il modo migliore e più semplice per imparare e padroneggiare ciò che devi sapere.

Leggi Avanti

CondividereTwittaE-mail
Argomenti correlati
  • Programmazione
  • Sviluppo del gioco
  • Unità
  • Programmazione
Circa l'autore
Marco Mears III (30 articoli pubblicati)

Marcus è un giornalista tecnologico freelance e Junior Editor per la programmazione al MUO. È uno studente per tutta la vita, uno sviluppatore di front-end hobbista e uno scrittore di racconti con oltre 3 anni di esperienza nello sviluppo di prosa che tiene informati i lettori.

Altro da Marcus Mears III

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti