我正在使用菱形模式生成等距视角的瓦片地图:
tileWidth = 128;
tileHeight = 94;
for (var x = 0; x < rows; x++) {
for (var y = 0; y < cols; y++) {
var screenX = (x - y) * tileWidthHalf;
var screenY = (x + y) * tileHeightHalf;
drawTile(screenX, screenY);
}
}
这段代码显示正常,但我现在遇到了将屏幕坐标(鼠标位置)转换回等角线坐标的问题。
我尝试了反向计算:
var x = _.floor(screenY / (tileWidth / 2) - (screenX / tileWidth / 2));
var y = _.floor(screenY / (tileHeight / 2) + (screenX / tileHeight / 2));
对于0, 0
的瓷砖,它可以正常工作,但在此后无法产生正确的值。
我只是无法想出正确的数学方法 - 我是否错过了一些微不足道的东西或者我对这个过程完全错误?