我用瓷砖64x32绘制等距地图
const Offset = 160;
int X, Y;
for (int a=0; a < 6; a++)
for (int b=0; b < 6; b++) {
X = a * 32 - b * 32 + Offset;
Y = a * 16 + b * 16;
DrawTile(X, Y, tile);
}图像,演示此代码:http://i.imgur.com/tgCxF.png
亲爱的专业人士,请帮助在单元格的等距指数中转换鼠标坐标的公式。示例:(105;100) -> 1;4。
谢谢。
P.S.请原谅我英语不好。我只是在学习..。
发布于 2012-08-20 09:57:19
有两个基向量p=(32,16)和q=(-32,16)。任何向量r都是p和q的线性组合:
r = a * p + b * q
components:
rx = a * 32 - b * 32 = (a - b) * 32
ry = a * 16 + b * 16 = (a + b) * 16
so your indexes are:
a = (2 * ry + rx) div 64
b = (2 * ry - rx) div 64
(div is integer division)补充道:注意到,我使用中间顶点作为坐标0,并考虑到您的偏移量。
https://stackoverflow.com/questions/12035096
复制相似问题