Crea Arkanoid con Unity audio, nuovi livelli e distribuzione

Cosa starai creando

In questa serie di tutorial, ti mostreremo come ricreare il classico gioco Arkanoid (o Breakout) in Unity, utilizzando gli strumenti 2D nativi di Unity. In ogni post, ci concentreremo su una parte specifica del gioco; in questo post aggiungeremo suoni e musica, creeremo nuovi livelli e implementeremo il gioco su diversi dispositivi e piattaforme.

Da dove siamo partiti

Nelle esercitazioni precedenti hai impostato il progetto, codificato i comportamenti degli oggetti principali e implementato un sistema di punteggio e vita. Se non hai ancora completato i tutorial precedenti, ti consigliamo vivamente di farlo prima di continuare.

Anteprima finale

Dai un'occhiata a questa demo per vedere a cosa miriamo per l'intera serie:

Suoni e musica

Nel primo post di questa serie, hai importato diversi file audio e musicali. Ora è il momento di usarli. Nel Suoni cartella, ci sono tre file:

  • hit.wav: da utilizzare su ogni collisione con la palla.
  • lose.wav: da usare quando il giocatore perde una vita.
  • point.wav: per usare poi il giocatore segna un punto.

Dobbiamo modificare entrambi Giocatore e Palla script per riprodurre questi effetti. Iniziamo con Palla oggetto. 

Inizialmente, dobbiamo aggiungere un componente audio agli oggetti del gioco. Seleziona la palla e aggiungi un Sorgente Audio (Gerarchia> Impostazioni> Aggiungi componente). Si noti che è necessario deselezionare l'opzione Gioca On Awake, se è controllato; in caso contrario, gli effetti sonori verranno riprodotti automaticamente all'avvio della scena.

Hai un componente audio; ora devi modificare lo script della palla per interagire con il componente stesso. Crea una nuova variabile per il file audio. Dal momento che si desidera accedere al suono nell'editor, la variabile dovrebbe essere pubblico:

pubblico AudioClip hitSound;

Faremo in modo che la palla produca un suono ogni volta che entra in collisione con qualcosa mentre è attiva. Per fare questo, usiamo il OnCollisionEnter2D metodo, controlla se la palla è attiva, e gioca la clip in questo caso:

void OnCollisionEnter2D (Collision2D collision) if (ballIsActive) audio.PlayOneShot (hitSound); 

Nota che devi controllare se la palla è attiva prima di suonare il suono, altrimenti, il suono inizierà a suonare costantemente quando la palla è inattiva.

Ora spostati sull'editor e verifica di avere un nuovo parametro, Hit Sound, nel copione della palla:

Trascina il hit.wav file dal Progetto scheda e rilasciarlo sul Hit Sound parametro dello script. Dovresti vedere qualcosa di simile a questo:

stampa Giocare, e controlla di sentire ora il suono corretto ogni volta che la pallina rimbalza su qualcosa.

Ora inseriamo i due suoni rimanenti nel gioco. Inserisci un altro Sorgente Audio, ma questa volta all'oggetto giocatore. Ancora una volta, deselezionare il Gioca On Awake opzione.

Ora apri lo script del giocatore e crea due variabili aggiuntive. La prima variabile è per il suono riprodotto quando il giocatore segna alcuni punti, e il secondo è per il suono riprodotto quando il giocatore perde una vita. Entrambi dovrebbero essere dichiarati pubblici.

audioClip pointSound pubblico; pubblico AudioClip lifeSound;

Dato che ora hai gli oggetti, modifichiamo il addPoints metodo per riprodurre il suono ogni volta che viene chiamato. Come prima, devi chiamare il PlayOneShot metodo dal Audio oggetto:

void addPoints (int points) playerPoints + = points; audio.PlayOneShot (pointSound); 

Ora fai la stessa cosa nel TakeLife metodo:

void TakeLife () playerLives--; audio.PlayOneShot (lifeSound); 

Salvare lo script e spostarsi nuovamente sull'editor. Trascina i due file audio rimanenti su ciascun nuovo suono del lettore (punto e vita). Dovresti avere qualcosa come la seguente immagine:

Adesso, Giocare il gioco e verificare che i tre suoni suonino quando previsto.

Musica di sottofondo

Nonostante gli effetti sonori, la sensazione generale durante il gioco è piuttosto vuota. Modifichiamolo aggiungendo musica di sottofondo diversa per ogni livello.

Nel Gerarchia scheda, selezionare il sfondo oggetto e aggiungi un componente sorgente audio:

Ora, trascina Jaunty Gumption.mp3 dal Progetto scheda e rilasciarlo sul Clip audio parametro del Sorgente Audio componente. Questa volta, dovresti lasciare il Gioca On Awake parametro controllato, dal momento che vogliamo che la musica inizi a suonare all'inizio del nostro livello. Accendi il Ciclo continuo opzione pure; questo farà suonare la musica su un loop infinito fintanto che il livello viene riprodotto.

Vai avanti e premi Giocare! Il tuo gioco ora include suoni e musica.

livelli

Per finire il gioco, ci sono due cose che affronteremo:

  • Quando il giocatore distrugge tutti i blocchi, dovrebbe passare al livello successivo.
  • Quando il giocatore finisce le vite, il gioco dovrebbe ricominciare.

Iniziamo creando un secondo livello per il gioco. Invece di creare un livello da zero, possiamo semplicemente duplicare il primo livello e modificare gli oggetti di questo nuovo livello.

Per fare ciò, è sufficiente salvare la scena come nuova. Clic File> Salva scena come ... , nominalo Livello 2, e posizionarlo nel livelli cartella. 

Per rendere questo livello diverso dal primo, idealmente, cambieremmo le posizioni di tutti i blocchi. Sentiti libero di farlo da solo ma, ai fini di questo tutorial, cambieremo solo l'immagine di sfondo e il livello di musica.

Seleziona il sfondo dal Gerarchia e passare al Ispettore. Trascina il background2 file dal Sprites \ Sfondi cartella al folletto componente del sfondo oggetto del gioco:

Per cambiare la musica di sottofondo, devi solo trascinare il file musicale desiderato nel Clip audio parametro. Per il livello 2, usa il Monkeys Spinning Monkeys.mp3 file.

Se si preme il Giocare pulsante puoi testare questo nuovo livello. Come puoi vedere, si comporta allo stesso modo del primo, ma con uno sfondo diverso e musica diversa. Poiché il secondo livello è pronto, è giunto il momento di gestire le due situazioni identificate in precedenza.

Nello script paddle del giocatore, creare un nuovo metodo chiamato Vincere perdere. Qui, controlleremo quando il giocatore perderà tutte le loro vite e reagirà di conseguenza: se playerLives raggiunge 0, chiamiamo semplicemente il Application.LoadLevel metodo e ricaricare il primo livello.

void WinLose () // riavvia il gioco if (playerLives == 0) Application.LoadLevel ("Level1"); 

Successivamente, gestiremo il caso in cui tutti i blocchi vengono distrutti, quindi vogliamo passare al livello successivo. Per determinare il numero di blocchi rimanenti, possiamo usare il FindGameObjectsWithTag di nuovo il metodo, questa volta alla ricerca di oggetti nel livello corrente taggato Bloccare. Se la matrice risultante ha una lunghezza di 0, allora sappiamo che è il momento di caricare il livello successivo.

Dato che questo tutorial ha solo due livelli, se il giocatore vince il secondo livello, semplicemente chiudiamo il gioco (chiamando Application.Quit).

Lo snippet completo per Vincere perdere il metodo è: 

void WinLose () // riavvia il gioco if (playerLives == 0) Application.LoadLevel ("Level1");  // blocchi distrutti if ((GameObject.FindGameObjectsWithTag ("Block")). Length == 0) // controlla il livello corrente if (Application.loadedLevelName == "Level1") Application.LoadLevel ("Level2") ;  else Application.Quit (); 

Chiameremo il Vincere perdere metodo nel Aggiornare metodo dello script del giocatore: basta aggiungerlo alla fine del metodo. Per semplicità, il completo Aggiornare il metodo è:

void Update () // movimento orizzontale playerPosition.x + = Input.GetAxis ("Horizontal") * playerVelocity; // lascia il gioco se (Input.GetKeyDown (KeyCode.Escape)) Application.Quit ();  // aggiorna l'oggetto del gioco transform transform.position = playerPosition; // boundaries if (playerPosition.x < -boundary)  transform.position = new Vector3 (-boundary, playerPosition.y, playerPosition.z);  if (playerPosition.x > boundary) transform.position = new Vector3 (boundary, playerPosition.y, playerPosition.z);  // Controlla lo stato del gioco WinLose (); 

Torna all'editor. Per rendere il Vincere perdere metodo funziona correttamente, è necessario taggare i blocchi nel gioco. Nel Progetto scheda, vai al prefabbricati cartella e selezionare un blocco. Tutti i blocchi sono attualmente senza tag e non c'è Bloccare tag, quindi dobbiamo crearlo. Clicca il Etichetta pulsante e selezionare il Aggiungi Tag opzione. Aggiungi un nuovo tag chiamato Bloccare:

Il gioco è ora pronto per i test. Clic Giocare e provalo!

Costruire e distribuire il progetto

Costruire e distribuire il progetto sono in genere le fasi finali dello sviluppo di un progetto. In questa sezione, imparerai come creare una build finale e le configurazioni necessarie per l'esecuzione in un ambiente multipiattaforma.

Innanzitutto, è necessario aggiungere tutte le scene a una build univoca. Clic File> Impostazioni di creazione. Verrà visualizzata una nuova finestra; il Scene in costruzione l'area sarà probabilmente vuota, così:

In tal caso, devi aggiungere le scene che abbiamo creato in precedenza. Clic Aggiungi corrente e una scena verrà aggiunta al Scene in costruzione la zona:

Nel nostro esempio, abbiamo aggiunto il primo livello. Ora chiudi questa finestra e seleziona il secondo livello nell'editor. Clic File> Impostazioni di creazione di nuovo, e fare clic Aggiungi corrente ancora una volta:

Se hai aggiunto il secondo livello prima del primo, non ti preoccupare: basta usare il mouse per scambiare le loro posizioni all'interno dell'interfaccia (poiché la prima scena nell'elenco è quella che verrà caricata all'avvio del gioco).

Una volta aggiunti entrambi i livelli nell'ordine corretto, fare clic su Costruisci ed esegui e dovresti vedere una build corretta del tuo gioco finale.

Come puoi vedere, ci sono diverse piattaforme su cui puoi scegliere di distribuire il tuo gioco, ovvero:

  • Browser Web
  • PC, Mac e Linux
  • Sistemi operativi mobili: iOS, Android, Blackberry e Windows Phone 8
  • Google Native Client
  • Console: Xbox 360, PS3 e Wii
  • Windows Store

Il grande vantaggio di usare Unity è che devi solo programmare il gioco una volta sola, quindi, utilizzando il motore, puoi distribuirlo in modo rapido e semplice su una delle piattaforme sopra menzionate.

Tuttavia, si noti che alcune piattaforme e alcuni sistemi operativi presentano alcune limitazioni in termini di regole di implementazione. Ad esempio, per la distribuzione su dispositivi iOS è necessario disporre di un sistema Mac e di una licenza di sviluppo appropriata. Hai anche bisogno di licenze da distribuire su PS3 e Xbox.

Le sfide

Ora che hai completato questo tutorial, pensiamo che tu sia pronto a intraprendere alcune sfide. Puoi vedere queste sfide come una ricerca della conoscenza di padronanza.

  1. Aggiungi diversi stili e configurazioni di blocchi: l'obiettivo è definire più blocchi con proprietà diverse, come valori di punteggio diversi e diversi numeri di hit da uccidere.
  2. Crea un livello originale: un terzo livello completamente diverso da quello del tutorial. Puoi utilizzare uno sfondo diverso, musica diversa e un layout di blocco diverso. Vorremmo vedere gli screenshot nella sezione dei commenti!
  3. Implementa una modalità multiplayer usando la stessa tastiera: aggiungi la logica necessaria per gestire l'input da altri tasti della tastiera e mostra il punteggio e le vite per il secondo giocatore nell'interfaccia.

Conclusione

Questo conclude questa serie di tutorial sulla costruzione di Arkanoid utilizzando il set di strumenti 2D di Unity. Abbiamo coperto molti aspetti di questa breve serie e ora dovresti sapere abbastanza per iniziare con i tuoi giochi 2D. Se avete domande o commenti, come sempre, sentitevi liberi di mandarci una riga nei commenti.