Modifier

Ces derniers temps je code un pjc (petit jeu con..structif) avec une perspective pseudo isométrique (dimétrique) ayant un rapport 2/1, ou X vaut le double de Y. Voici donc quelques représentations graphiques pour bien comprendre les contraintes que cela pose notamment dans les déplacements.

Grille isométrique

On peut y voir 8 déplacements possibles de 2 cases chaque. On peut facilement voir que les vecteurs n'ont pas la même taille. Les angles sont un peu plus trompeur, il y a par exemple un angle de 26,6. entre le Nord Est et Est. On n'est donc pas sur une rotation continue de 45°.

Les écrans n'étant pas dimétrique, il faut faire une projection 2d pour pouvoir l'afficher sur un écran. Par exemple une tuile chez moi fait 48 pixels de haut sur 96 de large. Sans dessiner tous les pixels voici ce que la projection peut donner :

Pour les déplacements sur les axes, Nord Est (NE) , Nord Ouest (NW), Sud Ouest (SW) et Sud Est (SE), il n'y a pas vraiment de probléme, c'est soit tout sur X soit tout sur Y. Par contre pour les autres, il faut se creuser un peu plus la tête. Si je me déplace de 2 sur X, je me déplace de 1 sur Y, si 4 sur X je me déplace de 2 sur Y. On reste dans le rapport 2/1.

Par contre si je me déplace de 3 sur X je ne peux pas faire 1,5 pixels sur Y, ça n'existe pas. Personnellement je gruge en faisant un coup sur deux. Un coup je me déplace de 2 sur Y, l'autre je me déplace de 1, je conserve donc mon rapport 2/1 mais en deux coups. Pour un petit objet ou un personnage, cela fonctionne bien, par contre pour une grande surface comme une mer, l'astuce du demi pixels peut générer des sautes désagréables, c'est une histoire de dosage.

Avoir une vitesse de déplacement en nombre impair peux être intéressant pour limiter la vitesse de déplacement. Si on veut cinq vitesses de déplacement différentes avec X en nombre pair (0,2,4,6,8) la plus grande vaudra 8 pixels à chaque coup. 8px * 30 images par seconde = 240px par secondes. Il faudra donc 8 secondes seulement pour traverser une résolution de 1920px. Avoir un jeu de vitesse plus bas peut donc être intéressant (0,1,2,3,4). A chaque jeu ses calculs...

Les déplacements en 2/1 sont fluides à l'image, mais ne couvre pas tous les cas. En autorisant que 8 axes de déplacements, il est fort problable que vous ne trouviez pas toujours l'angle parfait pour vous rendre à un point. Selon comment vous coder vos déplacement vous pouvez vite vous trouvez dans la situation ci dessous :

Il faudra trouver un moyen de lisser la trajectoire ou carrément de les éviter pour éviter d'avoir des déplacements illisibles.

Les déplacements dans une perspective isométrique ne sont pas toujours simple. Il faut se creuser les méninges pour arriver à sortir quelque chose de propre. Comme je n'ai pas trouvé de solution miracle, je peux juste vous conseiller de dessiner sur une feuille à petits carreaux vos déplacements, pour voir ce qui va fonctionner et ce qui ne marchera pas.