我有一个基于瓷砖的等角世界,并且可以使用以下计算方法计算特定(鼠标)坐标下方的瓷砖:
function isoTo2D(pt:Point):Point{
var tempPt:Point = new Point(0, 0);
tempPt.x = (2 * pt.y + pt.x) / 2;
tempPt.y = (2 * pt.y - pt.x) / 2;
return(tempPt);
}
function getTileCoordinates(pt:Point, tileHeight:Number):Point{
var tempPt:Point = new Point(0, 0);
tempPt.x = Math.floor(pt.x / tileHeight);
tempPt.y = Math.floor(pt.y / tileHeight);
return(tempPt);
}
(摘自http://gamedevelopment.tutsplus.com/tutorials/creating-isometric-worlds-a-primer-for-game-developers--gamedev-6511,此处为Flash实现,但数学原理相同)
但是,当我有不同高度的瓦片时遇到了问题:
![enter image description here](https://istack.dev59.com/sACIL.gif)
![enter image description here](https://istack.dev59.com/HPNJT.gif)
在这些情况下,由于某些具有较高高度的瓦片,它们后面的瓦片(或部分瓦片)被覆盖,不应该能够被鼠标选择,而是应该选择前面的瓦片。 如何计算考虑到瓦片高度的鼠标坐标所选的瓦片? 我正在使用JavaScript和Canvas实现。