|
public static Point XY2grid(int x, int y)//x,y是屏幕座标
{
Point p = new Point(0, 0);
int tileW = 24;
int tileH = 12;
int cx, cy, rx, ry;
cx = (x / tileW) * tileW + tileW/2;//MS计算出当前X所在的TILE的中心的X坐标
cy = (y / tileH) * tileH + tileH/2;//MS计算出当前Y所在的TILE的中心的Y坐标
//这里开始就不明白了,请高手指点
rx = (x - cx) * tileH/2;
ry = (y - cy) * tileW/2;
if (Math.abs(rx)+Math.abs(ry) <= tileW * tileH/4)
{
p.x = (x / tileW) * 2;
p.y = (y / tileH) * 2;
}
else
{
x -= tileW/2;
y -= tileH/2;
p.x = (x / tileW) * 2 + 1;
p.y = (y / tileH) * 2 + 1;
}
return p;
}
|
|