Allora:
Per chi segue le mie avventure saprà che sto cercando di programmare un platform / shoot'em up con Construct 2, ma...
Per chi segue le mie avventure, saprà pure che io non sono un programmatore ma solo un umile grafico gran Maestro del pixel.
Per cui è normale che mi incarti su roba che per uno che è uscito dal ventre di sua madre con la calcolatrice in mano te la fa ad occhi chiusi.
Ora... io non voglio che la gente mi programmi alcunché, nel senso che, se posso imparare a farmelo da solo sono più soddisfatto e anche imparerei a cavarmela in situazioni simili che hanno da venire, perchè...
vista la mole di lavoro che mi aspetta,
ne hanno ancora tante da venire.
Non intendo aprire un topic sul progetto, almeno fino a quando non riesco a realizzare un motore di gioco che mi convinca, ma... attualmente mi sono bloccato da un paio di giorni... o forse tre, (sto facendo le notti e ho perso il conto) su una questione che non riesco a risolvere.
Allora, la questione è la seguente:
Il mio sprite principale, Meet Candy.
O quel che se ne percepisce...
Deve compiere queste tre azioni in sequenza:
- Estrema sinistra, posizione di "idle" cioè, la posa che assume quando nessuno impartisce ordini da tastiera o qualsiasi altra periferica.
- Centrale, si abbassa ed estrae la pistola per sparare un colpo.
- Estrema destra, si è già abbassata e ha già la pistola estratta, e spara un colpo.
Preso atto di ciò, che il giocatore sia nella seconda fase o nella terza può in qualunque momento smettere di sparare e ritrovarsi nella posa iniziale.
A tal proposito, non avendo idea di cosa mi offrisse il tool ho creato un timer che non può scendere sotto lo zero, e che quando raggiunge lo zero ordina a Candy di tornare in idle e interrompere quello che stava facendo.
Di contro, quando il giocatore sta sparando (pose 2 e 3) il timer si setta a "3" e ogni "0.2" secondi sottrae a questo valore "1" fino a raggiungere lo zero.
E funziona... anche se forse esistevano metodi meno macchinosi.
Il mio problema nasce quando invece deve sparare.
L'idea era che premendo "C" il programma ponga Candy in modalità di fuoco, estragga l'arma e spari un colpo.
Volevo gestire il tutto con una singola animazione.
(Ovvero:
Si abbassa,
estrae l'arma e
spara)
tutto insieme, esiste infatti in-game anche questa situazione...
In cui il giocatore, dopo aver frenato per l'eccessiva velocità (frame 1 arrivando da sinistra) inverte la direzione ruotando (frame 2) e riprende il movimento verso destra (frame 3)
In questo caso l'animazione è però stata spezzata in due fasi, (frenata + inversione)
con due animazioni separate sono riuscito a gestirla più facilmente. Impedendo al giocatore di inserire input nel gioco mentre lo sprite di Candy è impegnato a compiere queste azioni che in sé sono automatizzate)
Nel caso del "fare fuoco" tuttavia... volevo gestire tutto in modo più "concentrato" (senza sapere se ciò sia possibile, non avendo mai fatto calcolatrici in vita mia) ma ecco il problema.
Il tasto per sparare è solo uno (il tasto "C" ) di conseguenza sia che Candy estragga l'arma e spari, sia che l'abbia già estratta precedentemente, il tasto rimane il medesimo:
Questo vuol dire che quando in-game si preme il tasto di fuoco il programma mi passa subito al troncone di informazioni che gestiscono lo sparo DOPO aver estratto l'arma, perdendo così l'animazione del secondo frame in alto, dove estrae la pistola.
Adesso... non che sia brutta anche se non estrae alcunchè e di colpo la vedi con l'arma in mano, ma... voglio capire come posso gestire questa situazione.
Ho provato a differenziare le due fasi con una variabile "arma estratta" a inizio gioco questa è settata su "false" o "0" è uguale, e viene attivata nel momento in cui il giocatore solleva il dito rilasciando il tasto di fuoco. (Non esiste la pressione continua, dal momento che i colpi sono contati ho fatto si che esca un colpo per ogni pressione del suddetto tasto)
La seconda fase di fuoco, cioè lo sparo quando Candy si trova già in posa, quindi, può essere possibile solo a condizione che la variabile "arma estratta" sia attiva.
Quando infine il timer torna a zero e lo sprite in idle, anche la variabile si riazzera.
Teoricamente dovrebbe funzionare, mentre... nella pratica, la variabile si attiva solo le prime volte, e se aumento la cadenza dei colpi sbarella e si blocca in "true" senza più azzerarsi.
Questo dovrebbe tra l'altro essere impossibile dal momento che in idle Candy azzera la variabile, ma... questo non avviene.
Ora, questo era un modo di farlo, che non lo fa XD ma... lasciamo stare, comunque era "UN" modo di farlo, che prevede l'inclusione di una nuova variabile e... francamente speravo di risparmiarmi la rogna di dovermene scrivere una nuova solo per quella azione.
Ma... secondo voi, qual-ora abbiate capito un acca di quel che ho scritto, come dovrei gestire la cosa? Avete altre idee, o idee che migliorino questa?
Fate presente che io di calcolatori e matematica capisco il giusto, (e il giusto per i calcolatori è sempre stato, fin dalla notte dei tempi, un cazzo di niente.)
Grazie del supporto.
PS
No, non passo il programma a nessuno, l'unico a cui lo passerei non sa usare il tool e quindi...
.
..
...
stanotte ho avuto le coliche, interessa?... Mh, no, ok, pensavo, aspetto eventuali consigli su Construct 2 che non siano "datte all'ippica"
Oh, nel caso questo esploit mi sia davvero utile mi riserbo di usare il topic in futuro per ulteriori magagne.
Modificato da Martin Ginrai, 20 February 2018 - 11:28 AM.