Sto cercando di capire come ottenere il riquadro corretto "attivo" sotto il mouse quando ho le tessere "ramp" e +1 altezza (vedi immagine sotto).Isometric Screen to Map
Quando il mio mondo è piatto, tutto funziona senza alcun problema. Una volta che aggiungo una tessera con un'altezza di dire +1, insieme a una rampa che ritorna a +0, la mia schermata -> mappa di routine sta ancora guardando come se tutto fosse "piatto".
Nell'immagine sopra, la "rampa" verde è la piastrella reale che voglio rendere e calcolare il mouse -> mappa, tuttavia la piastrella blu che vedi "sotto" è l'area che viene calcolata. Quindi se muovi il tuo mouse in una qualsiasi delle aree verde scuro, pensa che sei su un'altra tessera.
Qui è la mia mappa render (molto semplice)
canvas.width = canvas.width; // cheap clear in firefox 3.6, does not work in other browsers
for(i=0;i<map_y;i++){
for(j=0;j<map_x;j++){
var xpos = (i-j)*tile_h + current_x;
var ypos = (i+j)*tile_h/2+ current_y;
context.beginPath();
context.moveTo(xpos, ypos+(tile_h/2));
context.lineTo(xpos+(tile_w/2), ypos);
context.lineTo(xpos+(tile_w), ypos+(tile_h/2));
context.lineTo(xpos+(tile_w/2), ypos+(tile_h));
context.fill();
}
}
E qui è il mio mouse -> mappa di routine:
ymouse=((2*(ev.pageY-canvas.offsetTop-current_y)-ev.pageX+canvas.offsetLeft+current_x)/2);
xmouse=(ev.pageX+ymouse-current_x-(tile_w/2)-canvas.offsetLeft);
ymouse=Math.round(ymouse/tile_h);
xmouse=Math.round(xmouse/(tile_w/2));
current_tile=[xmouse,ymouse];
ho la sensazione che dovrò ricominciare da capo e mettere in atto un sistema di mappe basato sul mondo piuttosto che un semplice schermo -> mappa di routine.
Grazie.