SCRATCH 3...



INIZIAMO...
Nella prima parte abbiamo visto come creare gravità, caduta e atterraggio sul terreno, gestire pendii e pareti ripide ed infine far saltare il nostro sprite Cat.
Nella seconda parte vedremo come gestire il rilevamento del soffitto, come usare una hitbox per lo sprite Cat e infine come aggiungere una camminata piu realistica.
Nella immagine sotto lo script finale della prima parte.
​


Ecco cosa faremo in ogni parte:
A. Creare gravità, caduta e atterraggio (prima parte)
B. Gestire pendii e pareti ripidi (prima parte)
C. Fai saltare Cat in alto e in basso (prima parte)
D. Aggiungere il rilevamento del soffitto
E. Usare una hitbox per lo sprite Cat
F. Aggiungere una migliore animazione della camminata
G. Creare il livello
H. Aggiungere nemici e monete
​
Questo gioco platform può avere alcune difficoltà, ma chiunque può programmarlo se segue i passaggi di questo tutorial. Procediamo con il coding di ogni parte, un passaggio alla volta.​
​
D AGGIUNGERE IL RILEVAMENTO DEL SOFFITTO​​​
​
Cat può camminare sul terreno e ora i muri impediranno a Cat di attraversarli. Ma se Cat urta con la testa una piattaforma dal basso, Cat si solleverà sopra di essa e la attraverserà! Per risolvere questo problema, dobbiamo apportare alcune modifiche al codice di salto per aggiungere il rilevamento del soffitto .
Fai clic sulla bandierina verde per testare il codice finora scritto. Fai saltare Cat sotto la piattaforma bassa. Nota che quando lo sprite Cat tocca la piattaforma e finisce sopra la piattaforma. Questo è il bug che dobbiamo correggere.
​
​

7. Aggiungere il codice di rilevamento del soffitto
Il problema con il codice è nel blocco personalizzato tocca terreno. Questo codice presuppone sempre che lo sprite del gatto cada dall'alto e se lo sprite Cat tocca lo sprite terreno viene sollevato sopra di esso. Lo sprite terreno rappresenta qualsiasi parte solida attraverso cui Cat non può muoversi, compresi i soffitti. Dobbiamo modificare il codice in modo che se lo sprite Cat salta in alto quando tocca lo sprite terreno , Cat smetta di salire perché sbatte la testa. Sappiamo che lo sprite Cat si sta muovendo verso l'alto quando la sua velocità y è maggiore di 0. Quindi modifichiamo il blocco personalizzato tocca terreno per aggiungere un nuovo input booleano denominato salire .

Un input booleano è un valore vero o falso. Utilizziamo un input booleano perché dobbiamo sapere se la velocità y è maggiore di 0 quando il blocco tocca terreno viene chiamato per la prima volta. Questo valore è vero o falso, il valore falso viene memorizzato nell'input salire proprio come lo memorizzerebbe una variabile. Se inseriamo velocità y > 0 nel blocco se allora invece di salire , il gatto finirebbe per salire sopra il soffitto invece di sbatterci contro.
Fare clic con il pulsante destro del mouse sul blocco tocca terreno e selezionare Modifica dal menu.

Fai clic su aggiungi un argomento booleano. Assegna il nome salire a questo nuovo campo di input e quindi fai clic su OK

Questo aggiungerà un nuovo blocco salire che puoi trascinare dal blocco tocca terreno proprio come fai con i blocchi dall'area i miei blocchi. Questo blocco salire verrà utilizzato in un nuovo blocco se allora altrimenti . Modifica il codice del blocco di terra tocca terreno per adattarlo a questo:

Se Cat si sta muovendo verso l'alto, il blocco cambia y di -1 fa sembrare che Cat stia sbattendo la testa. Altrimenti, lo script si comporta come in precedenza, sollevando Cat in modo che si trovi sopra il terreno.
Successivamente, dobbiamo modificare la chiamata tocca terreno in questo script. Aggiungeremo una condizione booleana per determinare se lo sprite Cat si sta muovendo verso l'alto, ovvero velocità y > 0 .

Il blocco tocca terreno velocità y > 0 imposta l' input salire su vero se la velocità y è maggiore di 0 (ovvero, se lo sprite Cat sta saltando e muovendosi verso l'alto). Se la velocità y non è maggiore di 0 , allora lo sprite Cat sta cadendo o è fermo, causando l' impostazione dell'input salire su falso.
Ecco come il blocco tocca terreno decide se eseguire cambia y di -1 (in modo che lo sprite Cat non possa passare attraverso il soffitto) o eseguire cambia y di 1 (in modo che lo sprite Cat venga sollevato da terra). In entrambi i casi, se lo sprite Cat tocca lo sprite terreno (il che accade se il codice all'interno del blocco ripeti fino a quando non stà toccando terrenot è in esecuzione), la variabile velocità y dovrebbe essere impostata su 0 in modo che lo sprite Cat smetta di cadere o saltare.
PUNTO DI SALVATAGGIO
​Fai clic sulla bandierina verde per testare il codice finora. Fai camminare Cat sotto la piattaforma bassa e salta. Assicurati che il gatto urti la piattaforma ma non la superi. Quindi fai clic sul segnale di stop rosso e salva il programma.

E USA UN HITBOX PER LO SPRITE CAT
C'è un altro problema con il gioco. Poiché il codice si basa sullo sprite di Cat che tocca lo sprite del terreno , qualsiasi parte dello sprite Cat può essere "in piedi" sul terreno, persino i baffi o la guancia! Nella figura sotto, Cat non sta cadendo perché la sua guancia è "atterrata" sulla piattaforma, il che non è molto realistico.


8. Aggiungi un costume Hitbox allo sprite del gatto
Fai clic sulla scheda Costumi dello sprite Cat . Quindi fai clic sul pulsante Paint new costume e disegna un rettangolo nero che copra la maggior parte (ma non tutta) dell'area degli altri due costumi. La figura seguente mostra un primo costume leggermente trasparente nella stessa immagine, così puoi vedere quanta area copre il rettangolo nero.

Chiama questo costume hitbox . Ogni volta che il codice del programma Platformer verifica se lo sprite Cat sta toccando lo sprite terreno , cambieremo il costume con il costume hitbox (rettangolo nero) prima del controllo e poi torneremo al costume normale dopo il controllo. In questo modo hitbox determinerà se Cat sta toccando il terreno.
Questi cambi di costume saranno gestiti tramite i blocchi aspetto viola scuro che hanno l'opzione esegui senza aggiornare lo schermo selezionata, quindi il costume hitbox non verrà mai disegnato sullo schermo.
​
9. Aggiungi il codice Hitbox
Aggiungeremo il blocco passa al costume all'inizio e alla fine del blocco personalizzato tocca terreno. Modifichiamo il codice dello sprite di Cat in modo che appaia così:
​


Questi blocchi della categoria aspetto viola cambieranno il costume in hitbox . Poiché hitbox è un semplice rettangolo che non ha parti sporgenti che potrebbero "impigliarsi" sulle piattaforme, come potrebbero fare la testa e i baffi di Cat, il gioco si comporterà in modo più naturale.
PUNTO DI SALVATAGGIO
Fai clic sulla bandierina verde per testare il codice finora. Fai saltare Cat e assicurati che non possa appendersi alla piattaforma con la guancia o la coda. Quindi fai clic sul segnale di stop rosso e salva il programma.
​

F AGGIUNGERE UNA MIGLIORE ANIMAZIONE DELLO SPRITE CAT
Lo sprite dIi Cat con cui inizia un progetto Scratch ha due costumi chiamati costume1 e costume2 .

Puoi realizzare una semplice animazione di camminata alternando avanti e indietro questi due costumi. Tuttavia, uno Scratcher di nome griffpatch ha creato una serie di costumi di camminata, in piedi, di salto e di caduta per il gatto Scratch.

Utilizzando questi costumi si renderà il gioco Platformer più raffinato rispetto all'uso dei due semplici costumi forniti dallo sprite Cat . Dobbiamo solo aggiungere un po' di codice di animazione che passi da un costume all'altro al momento giusto, i costumi che useremo si possono scaricare al link : Sprite animazione Cat (clicca su scarica poi continua con il solo download )
​
10. Aggiungi i nuovi costumi allo sprite Cat
Per aggiungere i nuovi costumi, devi caricare i file dei costumi nel tuo progetto Scratch. Troverai le otto immagini di camminata e le immagini di posizione in piedi, salto e caduta nel file cat.zip (per estrarre le immagini in Windows tasto destro del mouse quindi clicca su estrai tutto). I nomi dei file per queste immagini sono Walk1.svg , Walk2.svg , e così via fino a Walk8.svg , così come Stand.svg , Jump.svg , e Fall.svg .
Quindi, nell'editor di Scratch, fai clic sulla scheda Costumi dello sprite Cat . Fai clic sul pulsante scegli costume e clicca su importa costume seleziona Stand.svg per caricare il file. Questo crea un nuovo sprite con Stand.svg come costume.
Elimina i costumi originali costume1 e costume2 , ma mantieni il costume hitbox . Carica poi tutti i costumi nel seguente ordine (è importante che tu rispetti esattamente questo ordine):
-
Stand
-
Jump
-
Fall
-
Walk1
-
Walk2
-
Walk3
-
Walk4
-
Walk5
-
Walk6
-
Walk7
-
Walk8
-
Hitbox
​
Ogni costume non ha solo un nome (come Walk1 , Jump , o Fall ) ma anche un numero. Il numero del costume si basa sull'ordine del costume nella scheda Costumi. Ad esempio, il costume in alto si chiama Stand , ma è anche noto come costume 1. Il costume sotto si chiama Jump , ma è anche noto come costume 2. Il codice che aggiungeremo nel passaggio successivo farà riferimento ai costumi tramite i loro nomi e numeri.
​
11. Crea il blocco del costume corretto
Con tutti questi costumi diversi, sarà un po' complicato determinare quale e quando fotogramma dobbiamo mostrare. Utilizzeremo l'idea dei fotogrammi di animazione: diversi fotogrammi mostrati insieme creano rapidamente un'immagine in movimento, proprio come un sfogliare velocemente un libro.
Per tenere traccia dei frame (singola immagine), crea due variabili solo per questo sprite denominate frame e frames per costume. Quindi aggiungi due blocchi porta per queste variabili allo script quando si clicca su bandiera verde dello sprite Cat .
​

Ora la configurazione è completata.
Mentre il giocatore sposta lo sprite Cat a sinistra o a destra, vogliamo che la variabile frame aumenti. La variabile frame per costume tiene traccia di quanto velocemente o lentamente scorre l'animazione.
Modifichiamo il codice nel blocco personalizzato definisci camminata per aumentare la variabile frame di un valore calcolato in base ai frame per costume .

Quando Cat è fermo (ovvero non si muove né a sinistra né a destra), la variabile frame dovrebbe essere reimpostata a 0. Modificare lo script esistente quando si clicca sulla bandiera verde per aggiungere un terzo blocco se allora che reimposta la variabile frame.


Ora scriviamo un po' di codice per determinare quale costume mostrare. Useremo questo codice in alcuni punti degli script che abbiamo scritto, quindi creiamo un blocco personalizzato.
Nella categoria i Miei blocchi, fai clic sul pulsante crea un blocco e chiama questo blocco impostare costume e seleziona l'opzione Esegui senza aggiornare lo schermo , quindi fai clic su OK . Aggiungi i seguenti blocchi allo sprite Cat , iniziando con il nuovo blocco definisci costume corretto.


Se lo sprite Cat è sul terreno e se la variabile in aria è minore di <3, allora vogliamo visualizzare il costume Stand o uno dei costumi Walk, mentre se la variabile in aria è maggiore 3 allora vogliamo visualizzare i costumi Jump e Fall.
Quando si clicca sulla bandiera verde lo script continua a impostare il frame a 0 se il giocatore non preme i tasti freccia sx o dx. Quindi quando il frame è 0 , il blocco passa al costume Stand. Altrimenti, dobbiamo calcolare quale degli otto costumi da camminata mostrare. Questo calcolo si riferisce ai costumi in base ai loro numeri, che si basano sul loro ordine nella scheda Costumi.
Quale costume da camminata venga mostrato è deciso dal blocco passa al costume intero inferiore di 4 + resto della divisione di frame diviso 8 . Wow, sembra complicato! Analizziamolo per capire meglio ogni parte.
Il blocco resto della divisione di esegue un'operazione matematica modulo ( "mod" calcolatrice scientifica )
Possiamo controllare il costume che viene visualizzato usando un trucco matematico: poiché 8 mod 8 = 0, un valore di frame di 8 mostrerà il primo costume che cammina! Dobbiamo aggiungere 4 a questo numero, perché il primo costume che cammina è in realtà il costume 4. (Ricorda, costume 1, costume 2 e costume 3 sono rispettivamente i costumi in piedi, in salto e in caduta.) Questa somma viene quindi utilizzato il blocco intero inferiore (floor). Intero inferiore o floor è un termine di programmazione che significa "arrotondamento per difetto". A volte frame sarà impostato su un numero come 4,25 o 4,5 , quindi 4 + frame sarebbe 8,25 o 8,5 , ma vogliamo solo arrotondare per difetto per mostrare il costume 8.
​
Sostituisci i blocchi passa al costume1 nei blocchi definisci tocca terreno e definisci camminata con i nuovi blocchi impostare costume .

PUNTO DI SALVATAGGIO
Fai clic sulla bandierina verde per testare il codice. Muovi cATsullo Stage e assicurati che l'animazione della camminata venga visualizzata correttamente. Assicurati inoltre che i costumi in piedi, in salto e in caduta vengano mostrati al momento giusto. Quindi fai clic sul segnale di stop rosso e salva il programma.
​

Se lo sprite Cat affonda leggermente nel terreno può essere che l'immagine hitbox non è corretta nelle dimensioni, la dimensione giusta è all'incirca 71 x 177 e la posizione deve essere perfettamente centrata nell'area del disegno.
Nella prossima parte affronteremo il codice creare i livelli, e aggiungere nemici e monete...


