Pantalla isométrica para mapear

Estoy tratando de descubrir cómo puedo obtener el mosaico "activo" correcto debajo del mouse cuando tengo "rampa" y mosaicos de altura +1 (ver imagen a continuación).


Cuando mi mundo es plano, todo funciona sin problemas. Una vez que agrego un mosaico con una altura de decir +1, junto con una rampa que regresa a +0, mi pantalla -> la rutina del mapa todavía se ve como si todo fuera "plano".

En la imagen de arriba, la "rampa" verde es el mosaico real que quiero representar y calcular el mouse -> mapa, sin embargo, el mosaico azul que ves "debajo" es el área que se calcula. Entonces, si mueve el mouse a cualquiera de las áreas de color verde oscuro, cree que está en otro mosaico.

Aquí está mi mapa de render (muy simple)

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();

    }
}    

Y aquí está mi mouse -> mapa de rutina:

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];

Tengo la sensación de que tendré que comenzar de nuevo e implementar un sistema de mapas basado en el mundo en lugar de una simple pantalla -> rutina de mapas.

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta