In questa serie di post vedremo come realizzare un gioco Platformer a più livelli.
Abbiamo già visto in precedenti post come sviluppare uno script per il movimento, la caduta e il salto del nostro sprite, prendendo spunto da un tutorial realizzato, da uno dei più bravi autori della piattaforma di Scratch Griffpatch.
Anche per questo game useremo parte di quello script, vediamo i vari passaggi che serviranno per muovere e far saltare il nostro gattino nel Platformer game.
Iniziamo...
1 Gravità:
La gravità tira giù lo sprite, con lo script che segue vediamo che la velocità di caduta è sempre costante nel tempo...
Ma nella realtà un oggetto acquisterà più velocità più lunga sarà la caduta, per far ciò vediamo come impostare lo script.
Come prima cosa dobbiamo creare una variabile che ci servirà per incrementare la velocita di caduta nel tempo, andiamo su crea variabili e e la nominiamo "velocità y" .
Ora dobbiamo fare in modo che quando lo sprite tocca il suolo (ground), dovrebbe smettere di cadere e spostarsi di nuovo fuori dal suolo, come prima cosa dobbiamo disegnare una forma per lo sprite ground, ci servirà per il momento come test per comprendere e vedere se tutto funziona man mano che andiamo avanti con lo script.
Fai clic sul pulsante Disegna un nuovo sprite, nell'editor paint usa lo strumento Pennello o Linea per disegnare una forma per il terreno.
Puoi rendere le linee più spesse imposta lo spessore a circa 30, il colore è indifferente, il risultato sarà simile alla figura sotto, rinominiamo il nuovo sprite in "ground".
Vediamo lo script che serve per fermare la caduta quando lo sprite tocca ground.
Posiziona il gattino in alto sullo stage e poi clicca su bandiera verde per farlo cadere in basso, il gattino al momento nel toccare il suolo, sprofonderà per poi risalire, questo non lo vogliamo;
Quindi useremo una funzione di blocco personalizzata che chiameremo "tocca terra"
ricordiamoci di mettere la spunta su "esegui senza aggiornare lo schermo".
L'uso del blocco "tocca terra" ci consente di spostare lo sprite in alto di 1 pixel alla volta fino a quando non tocca più il pavimento, e di eseguire il blocco in modo talmente veloce che non scorgiamo più il problema.
Creato il nostro blocco personalizzato lo inseriamo nello script, modificandolo come vediamo qui sotto.
Come risultato vedremo che il gattino si ferma quando tocca ground e non affonda più.
2 Movimento:
Per far camminare il nostro sprite a destra e sinistra, dobbiamo semplicemente aggiungere lo script tasto freccia destra e freccia sinistra sotto il blocco terra e inserire il blocco usa stile di rotazione sinistra-destra.
Ora modifichiamo il nostro sprite ground (come abbiamo visto in precedenza utilizzando l'editor paint) creando varie pendenze del terreno e piattaforme, come indicativamente vediamo nella figura sotto.
Notate come il blocco personalizzato "tocca terra" che abbiamo scritto induce il nostro sprite a camminare anche sulle pendenze.( vedremo in seguito come risolvere)
Ora vediamo come creare e usare un blocco personalizzato che chiameremo "camminata", con questo blocco non dovremo ripetere una serie di blocchi più volte, sia per il movimento a destra che a sinistra.
Quando creiamo il blocco personalizzato "camminata" dobbiamo anche inserire 2 argomenti per far questo dobbiamo cliccare 2 volte sul pulsante "Aggiungi un argomento (numero o testo)" e quindi scrivere il nome dei due argomenti "direzione" e "velocità", in oltre occorre mettere la spunta su "Esegui senza aggiornare lo schermo".
Lo script modificato lo vediamo qui sotto...
Prova ora a far camminare il nostro sprite sul muro si può notare come salta magicamente fino in cima.
Il nostro sprite non ha limiti su quanto in alto può salire su un pendio se lo tocca, quindi si limita a salire in cima! il prossimo passo è creare un limite.
Scopriamo come possiamo fare... per iniziare occorre creare una nuova variabile che chiameremo "pendenza".
Ora possiamo aggiungere il nostro script pendenza, lo sprite potrà camminare a destra o sinistra se la pendenza è inferiore a 8, in caso contrario, cioè se uguale o superiore a 8 lo riportiamo dove era, perché troppo ripida.
Vediamo lo script e un video per capirne il funzionamento.
3 Salto:
Aggiungere l'azione di salto al nostro gioco è sorprendentemente facile, per fare in modo che lo sprite si lanci verso l'alto e naturalmente ritorni giù, dobbiamo semplicemente impostare la variabile "velocità y" su un numero positivo come 12.
Lo script qui sotto è un esempio e non lo metteremo in pratica nel progetto finale, è qui solo per mostrarti come funziona.
Ci sono problemi però... premere la barra spazio più volte rapidamente farà volare il nostro sprite su e su.
Per risolvere questo problema, dobbiamo solo consentirgli di iniziare un salto "quando sta toccando terra", tuttavia, un grosso problema può sorgere da tale presupposto, se uno sprite sta camminando lungo un pendio, spesso non toccherà sempre il terreno ma salterà in qualche modo il pendio.
Questo spesso comporta la perdita del salto dello sprite in un punto critico del gioco.
Un miglioramento quindi è dire che uno sprite può saltare "se ha toccato il pavimento molto di recente", (anche se non è sul pavimento adesso).
Occorre creare una variabile che chiameremo "caduta", il tasto spazio usa questa variabile che viene sempre aumentata di 1, ma non appena tocchiamo il suolo viene riportata a 0.
Vediamo come inserire la nuova variabile "caduta" nello script.
Lo script base per far saltare il personaggio finirebbe qui, però Griffpatch ci spiega come creare due tipi di salti differenti, cioè come fare un salto normale e come tenendo premuto il pulsante a lungo, fare un salto più lungo, questa cosa è interessante sopratutto per un gioco di Plataform.
Vediamo come differenziare ora i due salti, in realtà la soluzione è molto semplice andremo a interferire con il sistema di gravità quindi sostituiremo un blocco al comando cambia velocità y di -1 che è quello che serve per definire di quanto veniamo spinti dall' alto verso il basso dal sistema di gravità che poi è applicato dal blocco successivo.
Vediamo ora che possiamo saltare più in alto tenendo premuto il tasto ovviamente stiamo parlando di salti che hanno una piccola differenza se volete aumentare la differenza dei salti dovette diminuire il valore cambia velocità y di -2 con -5.
Ora però abbiamo un nuovo problema, se io tengo premuto il pulsante per fare il salto più in alto quando tocco terra potrà capitare, se non rilascio il tasto per tempo il personaggio salti nuovamente, quindi dobbiamo fare in modo che il comando di salto venga eseguito solo quando si preme il tasto e invece non funzioni se lo si tiene premuto, ora per fare questo utilizzeremo ancora una nuova variabile e la chiamiamo "tasto salto", (per aumentare o diminuire la lunghezza del salto possiamo mdificare il valore 14) vediamo come inserire la nuova variabile:
4 Rilevamento del soffitto
Avrete notato che quando saltiamo sotto una piattaforma, riusciamo a passare attraverso di essa e ad apparire in cima ? Beh, questo perché lo script del tocca terra presupponeva che stessimo cadendo sempre e che se toccassimo il terreno allora dovevamo essere i nostri piedi, quindi ci ha mosso fuori dal terreno. Tuttavia, se saltassimo e ci alzassimo, allora in realtà sarebbe la nostra testa a toccare il suolo, non i nostri piedi, e quindi spostarci verso l'alto dal terreno in realtà ci fa colpire la testa e poi essere spostati sopra la cosa che abbiamo colpito! Per risolvere il problema dobbiamo modificare il blocco "tocca terra".
Per fare questo sarà necessario fare clic con il tasto destro del mouse sul blocco personalizzato del "tocca terra" e modificarlo per aggiungere un nuovo input booleano chiamato "su? ".
I booleani possono contenere solo il valore vero o il valore falso, quindi se io devo controllare se il nostro sprite sta saltando oppure no questa informazione sarà vera solo se la variabile y vale più di zero, quindi al blocco personalizzato "tocca terra" dovrò passare questa informazione, vediamo lo script modificato.
Terminiamo qui questo primo post, nel prossimo vedremo hitbox, animazione e slancio.
Comments