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?