Gli State Mask

Introduzione

Come già detto nella pagina degli State, questo strumento è potente e ci permette di cambiare comportamento ad un oggetto, infatti spostandoci da uno state all’altro possiamo attivare e disattivare una porzione di logica dell’oggetto proprietario. Questo perchè impostando tutta la logica su un unico State Mask tutte le linee di Mattoni verranno eseguite comunque dalla prima all’ultima per ogni frame (se non è chiaro rileggere l’articolo sul Game Loop). Per evitare un’affollamento di Mattoni è meglio usare gli State Mask. In quest’articolo proporrò due esempi ma come sempre le applicazioni di queste tecniche sono molteplici e le vedremo piano piano durante questa serie di articoli. 

Primo esempio – Cambio di State

In questo primo esempio cambierò semplicemente lo State alla pressione di un tasto, ricordo che l’input lo scegli tu e che può essere uno dei tanti Sensors a disposizione. Aggiungi un Sensor Keyboard e un’Actuator State, assegna un tasto e lasciando l’Actuator come si trova, con l’opzione Set State, clicca sul secondo quadratino, è possibile mostrare anche gli State in debug come le Properties basta cliccare la i nel pannellino che mostra gli State. Ecco la logica

Quando parte il motore di gioco e viene premuto lo spazio, nel mio caso, lo State Mask passa al secondo (ti ricordo di mettere la spunta sul Show Debug Mode sul menù Game nella barra del menù principale di Blender, oppure sulle configurazione del Render nella Tab Display). In questo esempio nel secondo State non c’è nulla, ma possiamo mettere qualsiasi linea SCA per dare all’oggetto proprietario un nuovo comportamento.

Secondo Esempio – Cambio automatico

Possiamo anche far cambiare automaticamente lo State usando dei Sensors adatti, come ad esempio un Delay se vogliamo cambiarlo nel tempo, oppure una Property se vogliamo che sia un dato a decidere. Cancella il Sensor Keyboard e aggiungi un Sensor Delay, adesso inserisci sul campo Delay 120 (che equivale a 2 secondi con fps a 60), collega il tutto. Fai partire il motore di gioco e dopo 2 secondi lo State cambia. Ti ricordo che quando fai partire il motore di gioco il tempo parte da zero. Questo può essere utile, per esempio, per fare eseguire un’azione ad un’oggetto non immediata, quindi troppo meccanica, tipo un nemico che scopre il giocatore ed inizia ad inseguirlo.

Adesso proviamo con una Property, se ti ricordi l’articolo precedente sai come incrementarne una in modo da mandare l’impulso. Aggiungi una Property Integer e mostrala in debug, adesso i Mattoni; nel Sensor Delay cambia il ritardo a 60, metti la spunta su Repaet e scollega L’Actuator State. Adesso aggiungi un’Actuator Property e aggiungi 1 a prop. Voglio che accada esattamente quello che ho creato prima, cioè dopo 2 secondi lo State cambia, quindi aggiungo un Sensor Property e gli do prop Equal 2 e lo collego all’Actuator State. Una volta fatto partire il motore puoi notare la Property che cambia e quando raggiunge 2 cambia anche lo State. Di seguito la configurazione.

Puoi fare diverse prove e sperimentare le varie opzioni dell’Actuator State in accordo con la sua scheda, l’importante è aver capito che gli State Mask sono come delle pagine di un quaderno, le possiamo girare come vogliamo e in ogni pagina abbiamo un disegno diverso che racconta una evento, mischiando le pagine possiamo creare diverse storie, nel nostro caso siamo noi a decidere quale disegni ci sono nel quaderno e quando girare le pagine. Come detto altre applicazioni verranno spiegate man mano in questa serie dedicata alla Logica di gioco.

Puoi scaricare tutti i file di questa pagina al seguente link