【问题标题】:Diamond isometric tile picking钻石等距瓷砖采摘
【发布时间】:2013-10-21 02:19:45
【问题描述】:

我最近将等轴测图的显示样式从交错转换为菱形,但我无法弄清楚瓷砖拾取过程。

我非常了解有关此主题的其他现有线程,并且我阅读了所有这些线程,但我还没有找到解决方案(这些天我的注意力一团糟)。

我正在使用一个非常基本的系统,它包括遍历所有图块并选择鼠标指向的图块(类似于 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

而且坐标是这样的:

谁能给我一些提示或解释我应该怎么做?
谢谢。

【问题讨论】:

标签: c# xna tile isometric


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    相关资源
    最近更新 更多