Aggiungi rilevamento del soffitto
Il gattino può camminare a terra, e ora i muri impediranno al gatto di muoversi attraverso di loro. Ma se il giocatore fa sbattere la testa dello sprite Cat contro una piattaforma dal basso, lo sprite gatto salirà sopra di esso! Per risolvere questo problema, dobbiamo apportare alcune modifiche al codice di salto per aggiungere il rilevamento del soffitto.
7. Aggiungi una piattaforma bassa alla sprite terra. Aggiungi una o più piattaforme corta e bassa al costume di Sprite di terra, come mostrato nella figura seguente.
Questa piattaforma dovrebbe essere abbastanza bassa da permettere al gatto di colpirla con la testa. Se non può, ridisegna la piattaforma un po 'più in basso.
Fare clic sulla bandiera verde per testare il codice fino a questo momento. Fai saltare il gatto sotto la piattaforma bassa. Si noti che quando lo sprite Cat tocca la piattaforma, finisce sopra la piattaforma. Questo è il bug che dobbiamo risolvere. Fai clic sul segnale di stop rosso.
8. Aggiungere il codice di rilevamento del soffitto. Il problema con il codice si trova nel blocco di base della maniglia definisci tocca terra. Questo codice presuppone sempre che lo sprite Cat cada dall'alto e, se lo sprite Cat sta toccando lo sprite di terra, dovrebbe essere sollevato sopra di esso.
Lo sprite di terra rappresenta qualsiasi parte solida che il gatto non può attraversare, compresi i soffitti. Abbiamo bisogno di cambiare il codice in modo che se lo sprite Cat sta saltando su quando tocca lo sprite di terra, il gatto smette di alzarsi perché urta la sua testa. Sappiamo che lo sprite Cat si muove verso l'alto quando la sua velocità y è maggiore di 0. Quindi modifichiamo il blocco terra della maniglia personalizzata per aggiungere un nuovo input booleano chiamato salita.
Un booleano è un valore vero o falso. Usiamo un input booleano perché dobbiamo sapere se la velocità y è maggiore di 0 quando viene chiamato per la prima volta il blocco tocca terra della maniglia. Questo valore vero o falso è memorizzato nell'input in movimento proprio come una variabile lo memorizzerebbe. Se mettiamo y velocity > 0 nel blocco se allora invece di salire, allora il gatto finirà per salire sopra il soffitto invece di urtarlo contro di esso.
Fare clic con il pulsante destro del mouse sul blocco di base della maniglia di definisci tocca terra e selezionare Modifica dal menu.
Fai clic sul triangolo grigio accanto a Opzioni per espandere la finestra e fai clic sul pulsante accanto a Aggiungi input booleano. Denominare questo nuovo campo di input spostandosi verso l'alto (salita), quindi fare clic su OK.
Questo aggiungerà un nuovo blocco in movimento che puoi trascinare sul blocco di maniglia di definisci tocca terra proprio come fai con i blocchi dall'area Blocchi. Modificare il codice del blocco di base della maniglia definisci tocca terra per farlo corrispondere come sotto:
Se il gattino si sta alzando, il blocco cambia y di -1 fa apparire il gattino come se stesse battendo la testa. Altrimenti, lo script si comporta come ha fatto in precedenza, sollevando il gatto in modo che si posizioni sopra la piattaforma.
Successivamente, dobbiamo modificare la chiamata a terra della maniglia in questo script. Aggiungeremo una condizione booleana per determinare se lo sprite si sta spostando verso l'alto, che è y velocity > 0.
Il blocco tocca terra y velocità > 0 imposta l'input di spostamento su true se la velocità y è maggiore di 0 (ovvero, se lo sprite salta e in salita). Se la velocità y non è maggiore di 0, lo sprite si sta abbassando o fermandosi, causando l'attivazione dell'ingresso di movimento su false.
Questo è il modo in cui il blocco tocca terra della maniglia di definizione decide se eseguire la modifica y di -1 (in modo che lo sprite di Cat non possa risalire attraverso il soffitto) o eseguire il cambiamento y di 1 (quindi lo sprite di Cat viene sollevato dal terreno ).
In entrambi i casi, se lo sprite di Cat sta toccando lo sprite di terra, la variabile di velocità y deve essere impostata su 0 in modo che lo sprite Cat cessi di cadere o saltare.
Fare clic sulla bandiera verde per testare il codice fino a questo momento. Fai camminare il gatto sotto la piattaforma bassa e salta. Assicurati che il gatto entri nella piattaforma ma non lo superi. Quindi fare clic sul segnale di stop rosso e salvare il programma.
Usare un HITBOX per lo sprite Cat.
C'è un altro problema con il gioco. Poiché il codice si basa sullo sprite Cat che tocca lo sprite di terra, qualsiasi parte dello sprite Cat può essere "in piedi" a terra, persino i suoi baffi o guance! In questa figura, il gatto non sta cadendo perché la sua guancia è "atterrata" sulla piattaforma, il che non è molto realistico.
9. Aggiungi un costume Hitbox a Sprite Cat Fare clic sulla scheda Costumi di sprite Cat . Quindi fai clic sul pulsante Dipingi nuovo costume e disegna un rettangolo nero che copre la maggior parte (ma non tutto) dell'area degli altri due costumi. La figura seguente mostra un primo costume leggermente trasparente nella stessa immagine in modo da poter vedere quanta area copre il rettangolo nero.
Dai un nome a questa hitbox in costume. Ogni volta che il codice del programma di Platform controlla se lo sprite di Cat sta toccando lo sprite di terra, passeremo il costume al costume da hitbox del rettangolo nero prima del controllo e poi torneremo al costume normale dopo il controllo. In tal modo, la hitbox determinerà se il gatto sta toccando il terreno.
Questi cambi costume saranno gestiti con i blocchi personalizzati viola scuro che hanno l'opzione Esegui senza aggiornamento schermo selezionato, quindi il costume della hitbox non verrà mai disegnato sullo schermo.
10. Aggiungi il codice Hitbox Aggiungiamo il cambio costume ai blocchi all'inizio e alla fine di entrambi i blocchi personalizzati viola scuro. Modifica il codice dello sprite di Cat in questo modo:
Questi blocchi della categoria Aspetto viola cambieranno il costume nel hitbox all'inizio di ogni definizione. Dato che la hitbox è un semplice rettangolo non ha parti sporgenti che potrebbero rimanere "catturate" dalle piattaforme, cosi come potrebbero fare la testa e i baffi del gatto, in seguito il gioco si comporterà nel modo più naturale.
Fare clic sulla bandiera verde per testare il codice fino a questo momento. Fai saltare il gattino e assicurati che il gattino non possa uscire dalla piattaforma per la sua guancia o coda. Quindi fare clic sul segnale di stop rosso e salvare il programma.