Finora abbiamo creato un mondo di gioco relativamente statico. Si, è vero, i nostri proiettili si muovono in una direzione, ma in sé sono ancora del tutto fermi. Questo perché non abbiamo ancora gestito le animazioni, ossia i frame che, ordinati in sequenza, permettono al nostro sprite di dare l’effetto del movimento. Vale per Unity la regola che vale per qualsiasi altro software che includa delle funzioni di animazione, ossia è presente una timeline (una linea del tempo) e a ogni intervallo corrisponde una diversa immagine. Il primo passo per muovere il nostro personaggio è creare una sprite sheet, ossia un foglio dove saranno presenti tutte le animazioni. Possiamo creare questa immagine con un qualsiasi software grafico (per esempio: Adobe Photoshop); per capire come operare in questo programma, potete usare le guide a Photoshop di HTML.it.
Importare una sprite sheet in Unity
La sprite sheet dev’essere un .png trasparente, dove sono posizionati in maniera ordinata gli elementi che andranno a costituire l’animazione. Non c’è bisogno di essere particolarmente precisi, tuttavia, dal momento che Unity contiene un tool che ci permette di ritagliare i singoli disegni che andranno a costituire il frame; ovviamente, bisogna evitare che le diverse parti dell’animazione si accavallino tra di loro. Nel nostro caso, stiamo creando una semplicissima animazione idle, ossia che viene attivata quando il personaggio è fermo e non riceve alcun input al giocatore, per cui scaleremo in altezza il nostro omino per dare l’impressione che stia respirando in maniera molto stilizzata. I principi che adotteremo, tuttavia, sono universali per qualsiasi tipo di animazione. Importiamo la sprite sheet in Unity come tutti gli altri asset grafici ma, nelle proprietà dell’Inspector, selezioniamo a Texture Type la voce Sprite (2D and UI), mentre in Sprite Mode scegliamo Multiple.
Tagliare la sprite sheet all’interno di Unity
Clicchiamo su Apply, poi su Sprite Editor e si aprirà, appunto, una finestra che ci permette di editare lo sprite. L’opzione più semplice, soprattutto se parliamo, come nel nostro caso, di uno sprite davvero semplice, è cliccare su Slice nella barra in alto, che taglierà il nostro omino secondo i confini della grafica. Cliccando sui quadratini gialli, possiamo aumentare o diminuire la grandezza della gabbia, e adattarla meglio al nostro sprite. Di default lo Slice è impostato su Automatic, ma cliccando su Slice, Grid by Cell Size potremo effettuare un taglio in base a una griglia predefinita, il che risulterà particolarmente interessante quando creiamo una sprite sheet del tutto ordinata, dove ogni disegno occupa una cella di altezza uniforme.
A questo punto avremo la sprite sheet, che si sarà generata una volta che abbiamo tagliato lo sprite e salvato le modifiche cliccando su Apply nella parte in alto. Per procedere, non dobbiamo fare altro che cliccare sullo sprite sheet, espanderlo e selezionare con Shift + click sinistro tutti i diversi frame. A questo punto trasciniamo i frame sul nostro personaggio, con il solito sistema drag and drop. Facendo questo, automaticamente si aprirà una finestra di dialogo, dove inserire il nome della nuova animazione. La chiameremo animazione_personaggio, e apparirà all’interno degli asset. Osserviamo come, cliccando sul nostro personaggio, tra i component è comparso Animator, mentre negli asset è apparso un cosiddetto Controller.
Se aggiungeremo altre animazioni al nostro personaggio, non saranno creati nuovi Controller, bensì le nuove animazioni saranno aggiunte a quello preesistente. Se a questo punto clicchiamo su Play, vedremo il nostro personaggio che si muove su e giù freneticamente. L’animazione quindi funziona, perché di default è chiamata ad attivarsi all’apertura del gioco, ma ovviamente è troppo veloce e bisogna intervenire. Andiamo nella finestra degli asset, clicchiamo due volte sul Controller ed entreremo all’interno del gestore dell’animazione. Questo sistema di nodi determina che, in base a una condizione, si attiveranno delle determinate animazioni. In questo caso, non è stata settata alcuna regola, per cui l’animazione parte automaticamente all’apertura del gioco, e continua anche quando ci muoviamo! Andiamo sul nodo animazione_personaggio e, nella finestra che si apre nell’Inspector, al parametro Speed inseriamo 0.2. Ogni animazione che aggiungiamo diventa un nodo di questa finestra, anche detta State, ovvero una situazione che si verifica al raggiungimento di una determinata condizione.