钻石等距瓷砖采摘

时间:2013-10-13 11:22:53

标签: c# xna tile isometric

我最近将等距地图的显示样式从交错转换为钻石,我无法弄清楚切割过程。

我很清楚关于这个主题的其他现有线索,我读了所有这些,但我还没有找到解决方案(这些天我的注意力一团糟)。

我正在使用一个非常基本的系统,包括遍历所有瓷砖并选择鼠标指向的那个(类似于Map.Tile.Intersects(mouse.Rect)),然后借助颜色我选择了正确的瓷砖。

但是我不喜欢这个系统,因为与我看到和不理解的一些数学解决方案相比效率很低。

所以这是我用来创建地图的代码:

int x = 128 * j;
int y = 64 * i;
int isoX = (6 * 64) + (x - y);
int isoY = (x + y) / 2;

128是tileWidth,64 tileHeight,6 * 64是xOffset

坐标是这样的:

enter image description here

有人可以给我一些提示或解释我应该做些什么吗?  谢谢。

1 个答案:

答案 0 :(得分:1)

如果我们将公式放入方程组中:

isoX = 6 * 64 + 128 * j - 64 * i
isoY = 128 / 2 * j + 64 / 2 * i

我们可以轻松地反转矩阵并得到方程式:

i = -1/128 * isoX + 1/64  * isoY + 3
j =  1/256 * isoX + 1/128 * isoY - 3/2