Comandiamo il proiettile

Andiamo nella event sheet, utilizzeremo un’ evento ed un sotto evento, porteranno 3 azioni in totale, il nostro eroe lancerà il proiettile mediante la barra spaziatrice del pc, andiamo dunque a creare gli eventi.

Doppio click scegli “keyboard“, scegli “on key pressed“, click su “click to chose” e premiamo il tasto sulla tastiera “barra spaziatrice“,  come evento andremo a mettere che il nostro eroe, nel mio caso “pumpkinhero“, caccerà un oggetto dalla bocca, quindi click su “add event” scegli “il tuo eroe“, cerca “spawn another object“, nella finestra che appare in object, selezioniamo il “proiettile“, in layer mettiamo 1 “sarebbe il main” ed in image point metteremo quello che abbiamo creato nella lezione precedente, cioè il numero “1“.

Il risultato si presenta cosi:

Se però adesso il nostro eroe si gira e spara, lancerà un poiettile sempre nella stessa direzione, andiamo a correggere questo dettaglio, in effetti è un po triste vederlo guardare a sinistra e sparare a destra.

Sull’ evento sopra creato, andiamo a creare un sottoevento come spiegato nelle lezioni precedenti, porteà 2 azioni, con una cambiera il senso di marcia in base a dove guarda il nostro eroe, con l’ altra gireremo anche l’ immagine del proiettile, rimane brutto che guarda a destra e viaggia a sinistra.

Nel nuovo subevent scegliamo “il nostro eroe“, poi “is mirrored“, clicchiamo su “add action“, scegliamo il “proiettile” segliamo “set mirrored“, subito sotto click su “add action“, scegli “proiettile“, scegli “set angle of motion” e nella finestra di dialogo scrivere “180“.

Il risultato sarà come in immagine:

Adesso se tutto è corretto, lanciate il programma e vedrete come il vostro eroe sparerà sia a destra che a sinistra, in caso contrario guardate l’ istruzione completa sottoriportata, e rieseguite tutti i passaggi.

Tuttavia se colpiamo i nemici, il proiettile si limiterà a passare attraverso.

Attivazione collisioni e animazioni

Doppio click su “proiettile“, scegli “on collision whit another object“, scegli il “nemico“, poi click su “add action“, scegli “proiettile“, scegli “spawn another object“, scegli “l’ impatto“, scegli layer “1“, image point scegli “0“, subito sotto click su “add action“, scegli “proiettile“, scegli “destroy“.

In queste prime 2 azioni poste sopra, facciamo in modo che quando il proiettile tocca il nemico, rilascia l’ animazione dell’ impatto, e poi sparisce distruggendosi.

Continuiamo ad aggiungere azioni sotto queste 2 appena create, quindi, clicca su “add action“, scegli “nemico“, scegli “spawn another object“, scegli “l’ animazione del nemico ridotto in polvere“, scegli layer “1“, scegli “imagepoint 0“. Ancora un’ azione, clicca su “add action“, scegli “nemico“, scegli “destroy“.

Se provate, vedrete i vostri nemici morire ridotti in cenere, il risultato finale è quello che vedete nell’ immagine sotto assicuratevi che sia uguale altrimenti ripetete i passaggi.

Sicuramente qualcosa non va, e sono le animazioni suppongo, una volta completato il ciclo rimangono li ferme, polvere e impatto.

Eliminare i processi in memoria

La programmazione è un po come un neonato, va detto passo dopo passo come e cosa fare, se ricordate bene, nelle nostre istruzioni noi abbiamo attivato le animazioni, ma mai abbiamo fermato il loro cammino, ecco perchè, giustissimamente, sono ferme li all’ ultimo frame.

Ora presupponendo che voi, nel caso del proiettile abbiate scelto un animazione, andate nelle proprietà e scegliete in loop “si“, per il proiettile, poi regolatevi le velocità di animazione per l’ impatto e per la nuvoletta di polvere, dopo di che andiamo a distruggerle.

Comando destroy

Questo comando è molto utile, perchè elimina dalla memoria processi che potrebbero non essere utili e che occupano memoria, ad esempio se spariamo 100 colpi, o 5, questi non colpiscono i nemici essi continueranno a vagare anche oltre il layout del gioco, ed anche se non più visibili, il gioco dovrà ricordarsi che sono stati creati e che magari, ancora camminano verso l’ infinito e oltre.

Ecco perchè, dare un comando di destroy appena il proiettile esce dallo schermo rimane una cosa utilissima, questo eviterà “nel caso del proiettile”, migliaia di proiettili vaganti senza meta appesantendo il gioco.

Quali sorprese ci sono per la lezione n°.15?