我最近将等距地图的显示样式从交错转换为钻石,我无法弄清楚切割过程。
我很清楚关于这个主题的其他现有线索,我读了所有这些,但我还没有找到解决方案(这些天我的注意力一团糟)。
我正在使用一个非常基本的系统,包括遍历所有瓷砖并选择鼠标指向的那个(类似于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
坐标是这样的:
有人可以给我一些提示或解释我应该做些什么吗? 谢谢。
答案 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