Come realizzare un gioco semplice in Unity 3D

Unity 3D è un motore di gioco potente, semplice da usare e, soprattutto, gratuito da scaricare! (Esiste una versione a pagamento più potente, ma puoi fare molto con la versione gratuita.)

Nonostante il suo nome, Unity può essere utilizzato sia per giochi 2D che 3D. Puoi programmare in C #, Java o Boo, un linguaggio simile a Python. In questo tutorial, ti guiderò attraverso l'ambiente Unity e ti mostrerò come realizzare un semplice gioco in Unity.

Non hai bisogno di alcuna esperienza di codifica per seguire questo Istruttore; tuttavia, si consiglia perché potrebbe essere più semplice provare a correggere il codice per errori se si dispone di un qualche tipo di linguaggio di codifica.

Questo Instructable si basa sul tutorial RollaBall sul sito Web Unity. Esistono molti tutorial gratuiti che possono essere trovati sulla pagina Web dei tutorial di Unity. Ho creato questo Instructable principalmente per la mia pratica con Unity, ma anche per integrare i tutorial video con una serie di istruzioni scritte passo-passo.

Passaggio 1: creare un nuovo progetto

Apri Unity3D

Chiudi la finestra "Benvenuto in Unity" che si apre per impostazione predefinita quando apri Unity.

Fare clic su File - Nuovo progetto

Seleziona la posizione per il tuo progetto. Mi piace usare una cartella dedicata per contenere tutti i miei progetti Unity.

Digita il nome per il tuo progetto. Nello screenshot, il nuovo progetto si chiama "

Guarda lo screenshot per come dovrebbe apparire prima di fare clic sul pulsante Crea.

Fai clic su "Crea".

Passaggio 2: personalizzare il layout

La prima cosa che potresti voler fare è personalizzare il layout. Ogni finestra può essere cliccata e trascinata in posizione. In alternativa, è possibile utilizzare i layout predefiniti forniti con Unity facendo clic sulla barra a discesa in Layout nella parte superiore sinistra dello schermo. Mi piace il layout Alto, anche se trovo utile mettere la vista Gioco sotto la vista Scena.

Esistono cinque finestre principali che si utilizzano la maggior parte delle volte con Unity. Sono le finestre Scena, Gioco, Gerarchia, Progetto e Ispettore . Guarda le cinque immagini nella parte superiore del passaggio per le immagini di ciascuna finestra.

Scena : è qui che accade il gioco. Mostra quali elementi hai nel tuo gioco e dove sono l'uno rispetto all'altro. C'è un blocco nell'angolo in alto a destra che mostra l'orientamento spaziale della scena.

Gioco : mostra la vista che la telecamera principale vede durante il gioco. Puoi testare il tuo gioco in questa finestra facendo clic sul pulsante Riproduci nella parte superiore, al centro dello schermo.

Gerarchia : elenca tutti gli elementi aggiunti alla scena. Questa è la fotocamera principale per impostazione predefinita. È possibile creare nuovi elementi facendo clic su Crea e selezionando il tipo di oggetto desiderato. Questo può essere fatto anche usando il menu a discesa GameObject nella parte superiore dello schermo.

Progetto : mostra i file utilizzati per il gioco. È possibile creare cartelle, script, ecc. Facendo clic su Crea nella finestra Progetto.

Ispettore : è qui che personalizzi gli aspetti di ogni elemento presente nella scena. Basta selezionare un oggetto nella finestra Gerarchia o fare doppio clic su un oggetto nella finestra Scena per mostrarne gli attributi nel pannello Ispettore.

Passaggio 3: salva la scena e imposta la build

Fare clic su File - Salva scena. Salvare la scena nella cartella [Nome progetto] - Risorse. Le risorse sono una cartella prefabbricata in cui vorrai archiviare scene e script. È possibile che si desideri creare una cartella denominata Scene all'interno degli asset perché la cartella degli asset può diventare confusa.

Salva la scena come Scena o Principale o qualcosa del genere.

Fai clic su File - Impostazioni build.

Aggiungi la scena corrente da costruire.

Seleziona la piattaforma desiderata. Esistono molte opzioni, inclusi computer, sistemi di gioco e smartphone, ma se stai creando progetti per la prima volta, molto probabilmente vorrai selezionare Web Player o PC / Mac / Linux Standalone.

Fai clic su Impostazioni giocatore nella parte inferiore della finestra Impostazioni di costruzione. Questo apre le opzioni di Impostazioni del giocatore in Impostazioni. Qui puoi cambiare il nome dell'azienda, il nome del prodotto (gioco), l'icona predefinita, ecc.

Chiudi la finestra Impostazioni di costruzione. Tornerai su questo quando sarai pronto per finire il tuo gioco.

Passaggio 4: creare lo stage

Il modo più semplice per creare uno stage in Unity è aggiungere cubi.

Per fare ciò, vai su Oggetto di gioco - Crea altro - Cubo o usa il menu Crea nella finestra Gerarchia. Aggiungi un cubo.

Ripristina la trasformazione del cubo facendo clic con il pulsante destro del mouse su "Trasforma" nel pannello Impostazioni. È buona norma farlo ogni volta che crei un nuovo oggetto di gioco.

Seleziona il cubo nella Gerarchia. Rinominalo "Muro" facendo doppio clic sul suo nome in Gerarchia o usando il pannello Ispettore.

Scala il cubo nella direzione X per renderlo lungo e simile a un muro.

Fai clic con il pulsante destro del mouse su "Muro" nel pannello Gerarchia e duplicalo tre volte, in modo da avere quattro muri. Sembrerà che tu abbia un solo muro perché sono identici e quindi occupano lo stesso punto nello spazio. Trascinali in posizione e / o usa le opzioni di trasformazione per ogni cubo per fare una disposizione che assomigli ad un'arena.

Nota: per guardare intorno alla vista scena, fare clic con il pulsante centrale del mouse per spostarsi e scorrere per ingrandire e rimpicciolire. Fare clic e trascinare tenendo premuto il tasto ALT per ruotare la vista.

Crea un oggetto di gioco vuoto, utilizzando il menu a discesa Oggetto di gioco (Crea vuoto) nella parte superiore dello schermo. Chiamalo "Stage". Ripristina la sua trasformazione.

Seleziona tutti e quattro i "muri" e trascinali sotto l'oggetto di gioco "Palcoscenico".

Aggiungi un oggetto di gioco aereo selezionando Crea nel pannello Gerarchia e usalo per il pavimento. Rinominalo "Piano" e trascinalo sotto Stage nella Gerarchia.

Nota: è necessario premere Invio dopo la ridenominazione, altrimenti la modifica potrebbe non avere effetto.

Dai al pavimento una trasformazione di -0, 5 nella direzione Y per assicurarti che si allinei perfettamente con le quattro pareti.

Fai la scala del pavimento nelle direzioni X, Y e Z 1/10 della scala che hai usato per dimensionare le pareti.

Passaggio 5: creare il lettore

Puoi scaricare personaggi da vari luoghi online, come Unity Store, ma per questo tutorial utilizzeremo solo uno degli oggetti di gioco integrati per il giocatore.

Vai a Oggetti gioco - Crea altro - Sfera.

Seleziona la sfera nella Gerarchia e rinominala "Giocatore". Ripristina la sua trasformazione.

Ora abbiamo bisogno della fisica. Rendi il giocatore soggetto alle leggi della fisica facendo clic su Aggiungi componente nella parte inferiore del pannello Ispettore con il giocatore selezionato. Aggiungi fisica - Corpo rigido. Lascia tutte le impostazioni predefinite.

Noterai che ogni oggetto ha una varietà di "componenti" aggiunti ad esso che puoi vedere in Inspector. Ogni cubo, sfera, ecc. Ha un componente chiamato "collider". Questa è l'area fisica dello schermo in cui si ritiene che quell'oggetto occupi spazio. Se si disattiva un collider, l'oggetto diventa come un fantasma, in grado di passare attraverso altri oggetti. (Vedi il video per cosa succede quando si spegne il componente collider del lettore.) È possibile accendere e spegnere i componenti selezionando e deselezionando la casella accanto al nome del componente.

Passaggio 6: far muovere il giocatore

Seleziona il giocatore nella Gerarchia.

Riduci a icona i componenti che non desideri visualizzare aperti in Impostazioni facendo clic sulle frecce giù a sinistra del nome di ciascun componente. Questo chiarirà un po 'il tuo spazio di lavoro.

Fai clic su Aggiungi componente nella parte inferiore della finestra di ispezione. Seleziona Nuovo script, assegna un nome allo script come "PlayerController" e scegli un linguaggio di programmazione. Uso CSharp. Fai clic su Crea e aggiungi.

Per motivi di organizzazione dei file, aprire la cartella Risorse nella finestra Progetto e creare una cartella denominata Script. Metti il ​​tuo nuovo script in questa cartella.

Per aprire lo script per la modifica, fai doppio clic sul nome dello script in Impostazioni o aprilo dalla finestra Progetto. Questo apre un ambiente di programmazione chiamato MonoDevelop.

Nota: se questa è la tua prima codifica, dovresti sapere che può essere davvero nitido. Assicurati di essere coerente con l'ortografia, i casi e di avere parentesi quadre di apertura e chiusura, parentesi, parentesi graffe, virgolette, ecc. Inoltre, fai attenzione agli errori che derivano dal non avere un punto e virgola alla fine di una riga di codice.

Per impostazione predefinita, nel codice dovrebbero essere presenti due sezioni: void Start () e void Update (). Inizia viene eseguito non appena l'oggetto entra nel gioco e l'aggiornamento viene eseguito continuamente mentre l'oggetto è in gioco. Aggiungeremo un terzo, chiamato FixedUpdate per gestire i protocolli relativi alla fisica. Dovrebbe sembrare come questo:

 void FixedUpdate () {} 

Prima di poter inserire i comandi, dobbiamo dichiarare le variabili. Questo viene fatto verso la parte superiore della pagina, all'interno delle parentesi graffe che seguono PlayerController di classe pubblica (o simile): Monobehaviour, ma prima della funzione void Start (). Per il movimento, useremo una variabile chiamata "velocità", che possiamo regolare per determinare la velocità con cui il nostro personaggio si muove nell'arena. Dichiarare il tipo di variabile (float) e il nome (speed) in questo modo:

 velocità del galleggiante pubblico; 

Il punto e virgola indica al programma che questa è la fine della riga di codice. Riceverai un errore se dimentichi di includere un punto e virgola alla fine di ogni / la maggior parte delle righe di codice, quindi non lasciarlo fuori!

In FixedUpdate, dichiara altri due float, moveHorizontal e moveVertical. Questi assumono valori a seconda dei comandi da tastiera dell'utente e FixedUpdate li aggiorna ad ogni frame.

 float moveHorizontal = Input.GetAxis ("Horizontal"); float moveVertical = Input.GetAxis ("Verticale"); 

Caso importante.

Sempre all'interno di FixedUpdate, crea un nuovo Vector3, un tipo di variabile con tre dimensioni utile per spostare oggetti nello spazio 3D. Questo assumerà il valore dell'input dell'utente per il movimento orizzontale e verticale e sarà zero nella direzione su / giù perché in questo gioco il giocatore può muoversi solo in due dimensioni.

 Movimento Vector3 = nuovo Vector3 (moveHorizontal, 0.0f, moveVertical); 

Infine, inserisci una forza sul giocatore per spostarlo, usando rigidbody.AddForce, un protocollo incorporato nel componente del body rigido del giocatore.

 rigidbody.AddForce (movimento * * velocità Time.deltaTime); 

Time.deltaTime viene utilizzato per rendere il movimento più fluido. Modificheremo la variabile speed in un secondo momento, nell'editor Unity.

Salvare il file CSharp e tornare a Unity.

Vai al pannello Ispettore per il giocatore e guarda lo script di movimento che hai appena creato. Dovrebbe esserci una casella per la tua variabile pubblica, velocità. Puoi modificare il valore delle variabili pubbliche utilizzando Inspector.

Per ora, fai in modo che la velocità sia uguale a un numero compreso tra 100 e 1000 e fai clic sul pulsante di riproduzione nella parte superiore, al centro dello schermo. Dovresti essere in grado di muovere la palla in giro usando i tasti di spostamento predefiniti di Unity, ASWD o i tasti freccia.

Fare di nuovo clic sul pulsante Riproduci per uscire dalla modalità di test.

Passaggio 7: Aggiungi illuminazione

Crea un oggetto di gioco vuoto e chiamalo "Luci". Fallo facendo clic su GameObject nella barra degli strumenti in alto e selezionando "crea vuoto".

Crea una luce direzionale selezionando l'opzione dalla barra degli strumenti "Crea" nel pannello Gerarchia. Chiamalo "Luce principale". Trasformalo in un oggetto figlio di Luci trascinandolo nella Gerarchia sull'oggetto di gioco Luci. Questo è un concetto simile al mettere un file in una cartella.

Con Luce principale selezionata, modifica le impostazioni della luce nel pannello Ispettore modificando il Tipo di ombra in "Ombre morbide" e la Risoluzione in "Risoluzione molto elevata".

Nel pannello Ispettore, modifica la rotazione della luce principale per inclinarla verso il basso sull'arena. Ho usato 30X, 60Y, 0Z.

Fai clic con il pulsante destro del mouse sulla luce principale nel pannello Gerarchia per duplicarla. Dai un nome al duplicato "Fill Light" e crealo sotto Luci.

Inumidire l'intensità della luce di riempimento cambiando il colore in una tinta blu chiaro e riducendo il campo Intensità a 0, 1 (nell'Inspector).

Cambia Ombre in "Nessuna ombra".

Inclina la luce di riempimento nella direzione opposta rispetto alla luce principale. Per me, questo era (330, 300, 0).

Passaggio 8: perfezionare l'angolazione della videocamera

Vogliamo che la videocamera sia inclinata verso il basso sull'arena, quindi seleziona la Videocamera principale nella Gerarchia e regola la sua trasformazione fino a quando l'immagine nell'anteprima della videocamera (in basso a destra nel pannello Scena, con la videocamera selezionata) sembra a posto.

Ho usato (0, 10.5, -10) per la posizione e (45, 0, 0) per la rotazione.

Se lo desideri, puoi anche trascinare la videocamera nella vista scena per posizionarla.

Passaggio 9: fare in modo che la videocamera segua il lettore

Vogliamo che la telecamera segua il giocatore attorno allo schermo mentre si muove. A tale scopo, crea uno script chiamato "cameraMovement" aggiungendo un nuovo componente di script alla videocamera principale nel pannello Impostazioni. Fare doppio clic sullo script per aprirlo in MonoDevelop.

Questo script accederà a un altro oggetto di gioco, il giocatore, quindi devi dichiararlo prima della funzione Start () dello script scrivendo

 giocatore pubblico di GameObject; 

Crea un Vector3 chiamato "offset" scrivendo

 offset Vector3 privato; 

Nella funzione Start (), assegnare il valore di offset a essere

 offset = transform.position; 

che è la posizione (x, y, z) della videocamera.

Sotto una funzione chiamata LateUpdate (), definisci la posizione della telecamera come posizione del giocatore più un po 'di offset:

 void LateUpdate () {transform.position = player.transform.position + offset;} 

Salva lo script e torna su Unity.

Dobbiamo assegnare un oggetto di gioco al "giocatore" che abbiamo definito nello script cameraMovement. Seleziona la videocamera principale e osserva il pannello Impostazioni. Sotto lo script cameraMovement, ci dovrebbe essere una casella chiamata "Player". Attualmente è assegnato a Nessuno (GameObject). Trascina il giocatore dalla Gerarchia in questa casella per assegnare l'oggetto di gioco del giocatore allo script cameraMovement.

Assicurati di trascinare il nuovo script nella cartella degli script (nel pannello Progetto), che hai creato in Risorse.

Prova il gioco facendo clic sul pulsante di riproduzione nella parte superiore, al centro dello schermo. Dovresti essere in grado di muovere il giocatore con i tasti freccia e la telecamera dovrebbe seguire il tuo movimento.

Salva la scena e salva il progetto.

Passaggio 10: crea oggetti

Crea un nuovo oggetto di gioco. Può essere una sfera, un cubo, una capsula o un cilindro. Ho usato un cubo.

Chiamalo "Articolo".

Contrassegna l'articolo come "oggetto" selezionando Tag e creando un nuovo tag chiamato "oggetto", quindi tornando ai tag per quell'oggetto di gioco e selezionando il nuovo tag "oggetto" che hai creato. Tagga tutti i tuoi articoli come articoli. Assicurati di abbinare esattamente l'ortografia e le maiuscole.

Posiziona l'oggetto in un oggetto di gioco vuoto chiamato "Articoli".

Ripristina le loro trasformazioni.

Aggiungi un corpo rigido all'oggetto.

Duplica l'oggetto più volte e posiziona le copie attorno all'arena.

Passaggio 11: Fai raccogliere al giocatore gli oggetti e visualizza il punteggio

Apri lo script di movimento del giocatore dal pannello Ispettore con l'oggetto di gioco Giocatore selezionato e modifica lo script per consentire al giocatore di raccogliere e tenere traccia degli oggetti raccolti.

Fai due dichiarazioni: una è una variabile che tiene traccia del tuo punteggio e l'altra è un testo della GUI che mostrerà il tuo punteggio nella vista scena.

 conteggio int privato; pubblico GUIText countText; 

Sotto la funzione void Start (), inizializza count e CountText, una funzione che scriveremo in seguito.

 count = 0; CountText (); 

Scrivi una nuova funzione per ciò che accade quando il giocatore si scontra con gli oggetti. Questa dovrebbe essere la sua sezione, proprio come le sezioni void Start () e void Update.

 void OnTriggerEnter (Collider altro) {if (other.gameObject.tag == "item") 
 {Other.gameObject.SetActive (false); 
 Conteggio = Conteggio + 1; 
 CountText ();} 
 } 

Scrivi la funzione CountText, che aggiornerà il punteggio sul display della GUI.

 Void CountText () {countText.text = "Count:" + count.ToString (); 
 } 

Salvare il codice e tornare a Unity.

Seleziona tutti i tuoi articoli, assicurati che siano contrassegnati come articoli e controlla il pulsante "Is Trigger" nel componente Box Collider di Inspector.

Controlla anche il pulsante "Is Kinematic" sotto il corpo rigido. Questo impedisce ai tuoi oggetti di cadere attraverso il pavimento, essenzialmente disattivando la gravità.

Per countText, crea una nuova GUI (interfaccia grafica utente) Testo usando l'opzione Crea in Gerarchia.

Imposta la trasformazione del testo della GUI su (0, 1, 0) e assegnagli un offset di pixel di (10, -10) nel componente GUIText nel pannello Impostazioni.

Trascina il testo della GUI nella casella di testo Conteggio nell'Inspector con il giocatore selezionato.

Passaggio 12: creare pericoli

Questi pannelli difficili da vedere lanceranno il giocatore in aria, e possibilmente oltre il limite dell'arena, nel qual caso verrà superato il gioco. Fare pericoli è un processo simile a fare oggetti.

Crea un nuovo oggetto di gioco vuoto chiamato "Hazards".

Crea un nuovo Quad e chiamalo "Hazard".

Contrassegnalo come pericoloso e seleziona "Is Trigger".

Cambia il suo colore in modo da poterlo vedere selezionando Mesh Renderer nell'Inspector, con il pericolo selezionato e cambiando il suo materiale. Fai clic sul menu a discesa per Materiali e utilizza il piccolo cerchio grigio a destra della casella per selezionare un materiale diverso da quello grigio predefinito per il pericolo. Avevo preinstallato un materiale bianco, quindi l'ho usato.

Cambia la rotazione del pericolo su 90 attorno all'asse X e abbassa la sua altezza Y a -0, 4 in modo che sia un piccolo quadrato bianco che si trova appena sopra il pavimento dell'arena.

Modifica lo script del Player, sotto la funzione OnTriggerEnter (), in modo che spieghi la possibilità che l'oggetto in cui il giocatore si imbatte sia un pericolo, e non un oggetto. Di 'al giocatore di saltare se colpisce il pericolo.

 void OnTriggerEnter (Collider altro) {if (other.gameObject.tag == "item") {other.gameObject.SetActive (false); count = count + 1; CountText (); } if (other.gameObject.tag == "hazard") {other.gameObject.SetActive (false); Salto Vector3 = nuovo Vector3 (0.0f, 30, 0.0f); rigidbody.AddForce (jump * speed * Time.deltaTime); } 

Salvare il codice, tornare all'editor Unity e duplicare il pericolo alcune volte.

Posiziona i pericoli attorno all'arena e prova il gioco!

Articoli Correlati