top of page
  • Immagine del redattoreRobNico

platformer game 2.0 #6 parte

Nell'ultima parte abbiamo visto come inserire le monete che il gattino deve raccogliere per far punti, in questo post vediamo come creare nemici e aggiungere le vite al gattino.

Qui si può scaricare il file script di quello che abbiamo fatto fino ad ora e in più altri oggetti che ci serviranno per andare avanti con il gioco.

Per iniziare andiamo sullo sprite gattino, e più precisamente nel blocco rosso definisci costume , qui dobbiamo creare una logica che fa perdere una vita al gattino se precipita nella lava o nel fiume, perciò blocco se allora cosa se sta toccando il colore della lava e del fiume invia a tutti death, avvia riproduzione di un suono hurt e passa al costume Ouch2 (il costume Ouch2 lo trovate nel file che dovete scaricare e andrà inserito in fondo ai costumi del gattino), quindi lo rendiamo invisibile per 0.5 secondi, infine facciamo ritornare il gattino al punto di partenza... il tutto andrà inserito nel blocco se allora altrimenti ,vediamo lo script:



Andiamo nello sprite gattino e creiamo una nuova variabile che chiameremo vite, e la inseriamo sotto bandiera verde con il valore 3.


Ora possiamo caricare un nuovo sprite che terrà il conteggio delle vite del gattino, perciò andiamo su disegna un nuovo sprite, poi su costumi e carichiamo i 4 costumi a forma di cuore che trovate nel file scaricato.



Passiamo a scrivere il codice:


La spiegazione è semplice, il blocco bandiera verde all'avvio del gioco mostra il costume vite, porta la dimensione al 50%, passa al costume 1, porta la variabile vita a 3 ed infine posiziona il cuore nell'angolo a destra dello stage.

Mentre il blocco quando ricevo death cambia la variabile vita di -1 e passa al numero del costume in base al numero delle vite disponibili...

Perfetto vediamo ora come inserire i nemici, quindi disegna un nuovo sprite e in costumi carichiamo gli sprite snail e snail_move , cancelliamo il primo costume vuoto e passiamo a comporre il codice.

La prima parte del codice è praticamente quello che abbiamo usato per le monete, l'unica differenza è la variabile coin x sostituita da un nuova variabile nemico x e di una nuova variabile movimento_nemico che servirà per stabilire la lunghezza del movimento x degli sprite, che a differenza delle monete avranno un movimento sinistra/destra.

Come possiamo vedere la variabile movimento_nemico è impostata a 50 per il primo nemico e 40 per il secondo, il blocco quando vengo clonato ripeterà la variabile movimento_nemico 50 volte per il primo nemico che si muoverà di x2 ogni volta, avremo cosi un movimento di x100.

Ora dobbiamo creare un nuovo loop , che nel codice monete è quando ricevo coin_loop, per fare più ordine creiamo un nuovo messaggio, perciò andiamo sullo sprite gattino e blocco invia a tutti nemici_loop e lo inseriamo sotto il blocco coin_loop.



Ritorniamo allo sprite nemico, e vediamo il codice del blocco quando ricevo nemici_loop:

Occorre risolvere, anche per lo sprite nemico, il problema che spostandosi a dx o a sx rimane visibile, per eliminare questo problema facciamo quello che abbiamo fatto per le monete, qui dobbiamo aggiungere in più l'operatore o che serve, perche a differenza delle monete, il movimento dello sprite a dx e sx incide su questo valore.

Per capire come trovare il valore da inserire cliccare su bandiera verde, quindi cliccare sul primo costume snail, annotiamo il primo valore, ripetiamo l'operazione con il secondo costume e annotiamo il secondo valore.


Perfetto, ora possiamo inserire un blocco che se il gattino tocca il nemico perde una vita, vediamo come:

Il blocco funziona, solo che non perdiamo solo una vita ma molte, perche il contatto con il nemico avviene in molteplici parti del costume, come risolviamo, ci possono essere varie soluzioni, la più semplice è creare una variabile tipo boleana, cioe con un valore che puo essere falso o vero, che chiameremo immunità.

Ritorniamo allo sprite gattino e creiamo la variabile immunità e la posizioniamo sotto bandiera verde.

Perciò la variabile immunità all'inizio del gioco sarà 0, quando il gattino toccherà il nemico la variabile passerà a 1 per un tempo determinato dal loop ripeti, e fino al termine del ciclo il gattino sarà immune, per poi ritornare alla normalità.

Ritorniamo allo sprite nemico e aggiorniamo il blocco con la variabile immunità:


Ora non rimane che creare una logica tipo Mario Bros, che quando il gattino salta sopra il nemico lo "uccide".

Per far questo utilizzeremo le variabili che abbiamo usato per la funzione salto del gattino e cioè: velocità y, caduta e tasto salto.


Il funzionamento è molto semplice quando sta toccando il gattino sprite e il valore di caduta è maggiore di 20, vuol dire che sta saltando,di conseguenza può "uccidere" il nemico, aggiunto anche il suono EnemyHit, un lampeggio ed infine elimina il clone.

Siamo quasi alla fine, possiamo aggiungere un invia a tutti game_over:

Andiamo su disegna un nuovo sprite, poi su costumi e carichiamo lo sprite game over, cancelliamo il primo costume vuoto e passiamo a scrivere un semplice codice:


Possiamo anche inserire una variabile score per il conteggio dei punti quando "uccidiamo" un nemico, per esempio con un punteggio di 200 per nemico...e già che ci siamo anche un suono di sottofondo, che trovate nella cartella.



Per ultimo possiamo mettere un oggetto alla fine dell'ultimo schema, in modo che quando il gattino lo toccherà avra un messaggio Winner.

Possiamo semplicemente clonare lo sprite monete, cancellare i costumi coin e caricare al loro posto lo sprite flagGreen e flagGreen2, quindi modificare alcuni blocchi come segue:


Con questo abbiamo terminato questo Platformer Game 2.0, ora sta a voi migliorarlo inserendo altre monete e nemici, non dovete far altro che duplicare lo sprite coin o nemico e sostituire i costumi e i valori di x e y.

Qui è possibile scaricare il codice finale se avete perso qualche passaggio...

 


 

85 visualizzazioni0 commenti

Post recenti

Mostra tutti

Comments

Couldn’t Load Comments
It looks like there was a technical problem. Try reconnecting or refreshing the page.
bottom of page