|
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;
}
|
|