Formule pratique pour les tiles (2D)

Comme je trouve plus pratique de stocker des tiles en ne leur donnant qu’un numéro à chacune, j’ai cherché une méthode pour calculer la position X,Y dans un tileset d’un tile dont on ne possède que le numéro.

Le X,Y du tile dans le tileset permet ainsi de le copier vers la future map.

Comme j’aime bien partager des choses, je met la formule ici, si ça peut servir à quelqu’un :

Identificateurs bidons (des noms) pour cet exemple :
N=Numéro du tile à copier - 1 (on enlève 1).
Xtiles=nombre de tiles dans la largeur du tileset.
Ytiles=nombre de tiles dans la hauteur du tileset.

Trouvons les coefficients pour notre formule :
TY=coeficient pour la hauteur = Partie entière de (N/Xtiles).
TX=coeficient pour la largeur = N-(TY x Xtiles).

Trouvons X et Y :
Y=TY x hauteur d’un tile.
X=TX x largeur d’un tile.

Exemple pratique :
Un tileset qui contient 10 tiles dans sa largeur et 8 tiles dans sa hauteur.
Le premier tile complètement en haut à gauche a le numéro 1 et le dernier en bas à droite a le numéro 80.
On a donc 80 tiles (de 1 à 80).
Admettons que chaque tile fait 32x32 (par exemple, on prend ce qu’on veut, c’est juste pour le calcul).

Calculons par exemple la position X,Y du tile numéro 27 :
(suffit de suivre la formule)

TY = partie entière de (27/10) = 2
TX = 26 - (2 x 10) = 6

X = 2 x 32 = 64 pixels
Y = 6 x 32 = 192 pixels

Voilà, on peut maintenant copier le tile de la position X,Y pour l’envoyer à l’affichage de la map.

Cette méthode est pratique dans le fait qu’on a juste à stocker les numéros des tiles et non pas : coordonnées + numéro.

EDIT : Précision !

Si la numérotation de vos tiles commence à 0 alors N=Numéro du tile.
Si la numérotation de vos tiles commence à 1 alors N=Numéro du tile - 1

Salut,

Ceci serra très certainement très utile :slight_smile:
Mais… pour qui car avec GD ont ne peut pas faire de tille !
Merci de ton partage en tout cas :wink: