PDA

Visualizza la versione completa : [C++ Allegro 5] consigli su tile map?


g.b99pm10
24-10-2013, 18:34
Salve a tutti. Sto facendo un giochino 2d (simile alle versioni vecchie di pokemon per intenderci) giusto per divertimento utilizzando le librerie di Allegro 5. Nel gioco c'è un personaggio che cammina in un mondo. Per le collisioni ho agito in questo modo:
Ho scaricato il programma tiled map che permette di creare dei file txt contenenti le informazioni necessarie per le tile map. I numeri contenuti nel documento vengono letti dal programma ed assegnati a due array multidimensionali: 1 per stampare il quadratino ed uno per determinare le collisioni. Ad ogni ciclo viene scansionato l'array utilizzando un doppio ciclo for e viene stampata la mappa e verificate le collisioni (è un po' difficile da spiegare, se non capite ditelo che metto uno pseudo-codice). Tutto funziona bene, le collisioni funzionano, però c'è un problema: mettiamo che ogni tile sia di 30px * 30px, per poter verificare le collisioni c'è bisogno che il personaggio si muova di 30px in 30px, e per rendere visibile lo spostamento ho dovuto aggiungere un ALLEGRO_TIMER molto lento che faccia spostare il personaggio di 30px ogni 9.0 / 60.0 secondi (se non aggiungessi il timer il personaggio viaggerebbe velocissimo). Però in questo modo il personaggio cammina a scatti, perchè si sposta di 30 px in 30... quindi ho pensato di farlo muovere di 15 in 15 e ogni volta che viene cambiata direzione, il personaggio , nel caso il si trovi in mezzo al tile, viene messo al giusto posto.
Tutto questo solo per far coincidere le collisioni. Tuttavia questo metodo non mi convince a pieno, esiste un altro modo per rendere il gioco più naturale?

MegaAlchimista
24-10-2013, 19:37
è un bel casino... o te ne freghi e lo fai muovere a scatti, oppure puoi tenere la sua posizione in due posti diversi:
uno in cui lui effettivamente si trova, fra un tile e l'altro - che usi per visualizzarlo
uno in cui "va a scatti", che usi solo per fare il calcolo delle collisioni. Che aggiorni solo quando quello di cui sopra si è effettivamente spostato in un altro tile

g.b99pm10
24-10-2013, 19:52
grazie mille, però pensandoci un secondo: in questo modo l'immagine "fittizia" oltrepasserebbe metà dei tiles cui non potrebbe passare

MegaAlchimista
24-10-2013, 21:30
non so dipende da come lo implementi

Loading