Mentre il metodo descritto da SWS e MarkR è anche quello che preferisco, vorrei presentare un approccio alternativo.
Un'opzione di hacking per la creazione di un look isometrico con il minimo sforzo è di utilizzare effettivamente le tessere ortogonali e utilizzare context.transform per impostare una matrice di proiezione che renda la mappa isometrica (o una combinazione di context.rotate e context.scale quando non si " so come funzionano le matrici di proiezione).
Vedi le specifiche per i metodi di trasformazione della tela per i dettagli.
Immagine della piastrella:
Codice disegno:
for (var x = 0; x < 5; x++) {
for (var y = 0; y < 5; y++) {
ctx.drawImage(img, x * img.width, y * img.height);
}
}
Risultato prima dell'applicazione matrice:
Stesso codice con la stessa immagine della piastrella dopo aver applicato questa matrice di trasformazione:
ctx.transform( 1, 0.5,
-1, 0.5,
160, 0 );
Con la griglia tratteggiata rimossa dall'immagine della piastrella e modificato l'offset della piastrella nel codice di disegno in img.width - 1
e img.height - 1
per eliminare gli spazi vuoti causati dalla trasformazione. All'improvviso la tessera sembra metà brutta:
Lo svantaggio principale di questo metodo è che quando si progettano le piastrelle in un editor grafico, non saranno realmente ciò che vedi. Incontrerai anche problemi quando vuoi disegnare oggetti che non sono sul pavimento ma in posizione verticale. Per questi puoi disattivare la matrice di trasformazione prima di disegnarli, ma dovrai calcolare tu stesso la posizione. Puoi usare queste formule per questo:
var xScreen = xWorld * 1 + yWorld * -1 + 160;
var yScreen = xWorld * 0.5 + yWorld * 0.5 + 0;
(nota come i numeri dalla matrice di trasformazione riappaiono in queste formule: qui stai facendo la moltiplicazione della matrice).
Quindi perché dovrei farlo?
Questo metodo è utile quando:
- non hai esperienza con la progettazione di tessere isometriche, ma ne hai di ortogonali
- non voglio dedicare molto tempo allo sviluppo di un motore grafico isometrico, che è un po 'più difficile di un motore ortogonale.
Un'altra caratteristica interessante è che quando sai come aggirare il calcolo della matrice, puoi modificare la matrice di proiezione tra i fotogrammi per ingrandire, inclinare e ruotare la mappa in tempo reale per alcuni effetti 3D fasulli (prova a farlo con tessere isometriche) .
Ma quando sai come gestire le piastrelle isometriche, sia dal punto di vista artistico che tecnico, e non hai bisogno di trucchi dalla prospettiva falsa, ti suggerisco piuttosto di scegliere piastrelle a forma di diamante con trasparenza.