我想知道當我有「坡道」和+1高度的瓷磚時(見下圖),我可以如何在鼠標下獲得正確的「活動」瓷磚。等距屏幕到地圖
當我的世界是平的,一切正常,沒有問題。一旦我添加了一個高度爲+1的瓷磚,以及一個回到+0的斜坡,我的屏幕 - >地圖例程仍然看起來好像一切都是「平坦的」。
在上圖中,綠色「斜坡」是我想渲染和計算鼠標 - >地圖的真實瓦片,但是您看到「下方」的藍色瓦片是計算得到的區域。所以如果你將鼠標移動到任何深綠色的區域,它會認爲你在另一塊瓷磚上。
,這裏是我的地圖渲染(很簡單)
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();
}
}
這裏是我的鼠標 - >地圖程序:
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];
我有一種感覺,我不得不重新開始,並實施一個基於世界的地圖系統,而不是一個簡單的屏幕 - >地圖例程。
謝謝。