Bien que la méthode décrite par sws et MarkR soit également ce que je préfère, je voudrais présenter une approche alternative.
Une option hack pour créer un aspect isométrique avec un minimum d'effort consiste à utiliser des tuiles orthogonales et à utiliser context.transform pour définir une matrice de projection qui donne à la carte un aspect isométrique (ou une combinaison de context.rotate et context.scale lorsque vous ne le faites pas ''). t savoir comment fonctionnent les matrices de projection).
Voir la spécification des méthodes de transformation du canevas pour plus de détails.
Image en mosaïque:
Code de dessin:
for (var x = 0; x < 5; x++) {
for (var y = 0; y < 5; y++) {
ctx.drawImage(img, x * img.width, y * img.height);
}
}
Résultat avant l'application de la matrice:
Même code avec la même image de tuile après avoir appliqué cette matrice de transformation:
ctx.transform( 1, 0.5,
-1, 0.5,
160, 0 );
Avec la grille en pointillés supprimée de l'image de la tuile et changé le décalage de la tuile dans le code de dessin pour img.width - 1
et img.height - 1
pour éliminer les lacunes causées par la transformation. Soudain, la tuile semble à moitié aussi moche:
Le principal inconvénient de cette méthode est que lorsque vous concevez vos carreaux dans un éditeur graphique, ils ne seront pas vraiment ce que vous voyez est ce que vous obtenez. Vous rencontrerez également des problèmes lorsque vous souhaitez dessiner des objets qui ne sont pas sur le sol mais debout. Pour ceux-ci, vous pouvez désactiver la matrice de transformation avant de les dessiner, mais vous devrez ensuite calculer la position vous-même. Vous pouvez utiliser ces formules pour cela:
var xScreen = xWorld * 1 + yWorld * -1 + 160;
var yScreen = xWorld * 0.5 + yWorld * 0.5 + 0;
(notez comment les nombres de la matrice de transformation réapparaissent dans ces formules - vous effectuez vous-même la multiplication de la matrice ici).
Alors pourquoi devrais-je faire ça?
Cette méthode est bonne lorsque vous:
- vous n'avez pas l'expérience de la conception de carreaux isométriques, mais vous en avez de orthogonaux
- Je ne veux pas passer beaucoup de temps à développer un moteur graphique isométrique, ce qui est un peu plus difficile qu'un moteur orthogonal.
Une autre caractéristique intéressante est que lorsque vous connaissez votre chemin dans le calcul de la matrice, vous pouvez modifier la matrice de projection entre les images pour zoomer, incliner et faire pivoter la carte en temps réel pour de beaux effets faux-3d (essayez de le faire avec des tuiles isométriques) .
Mais lorsque vous savez comment manipuler les carreaux isométriques, à la fois artistiquement et techniquement, et que vous n'avez pas besoin de tromperie à fausse perspective, je vous suggère plutôt d'aller avec des carreaux en forme de diamant avec transparence.