我正在与Kivy和Pytmx合作,我需要从地图坐标中获得交错地图的网格瓦片。
我的磁贴大小是:
TILE_WIDTH = 256
TILE_HEIGHT = 149当我使用等距菱形网格时,我是这样计算的:
def screen_to_isometric_grid(cartX, cartY):
screenx = mh - cartY / (TILE_HEIGHT * SPRITE_SCALING) + cartX / (TILE_WIDTH * SPRITE_SCALING) - mw / 2 - 1 / 2
screeny = mh - cartY / (TILE_HEIGHT * SPRITE_SCALING) - cartX / (TILE_WIDTH * SPRITE_SCALING) + mw / 2 - 1 / 2
screenx2 = round(screenx)
screeny2 = round(screeny)
return screenx2, screeny2现在我正在使用交错的地图,我不知道如何获得瓦片坐标。
我在enter link description here这里找到了C++中的算法
发布于 2020-10-02 03:42:22
def subregion(px, py, r_x, r_y):
rx = int(r_x)
ry = int(r_y)
foo = px - py
bar = px + py
if foo < 0 and bar > 1: # Top
return [rx, ry]
elif foo < 0 and bar < 1: # Left
if r_y > 0:
if py > 0.5:
return [rx - 1, ry + 1]
return [rx - 1, ry]
else:
return None
elif foo > 0 and bar > 1: # Right
if r_y > 0:
if py > 0.5:
return [rx, ry + 1]
return [rx, ry]
else:
return None
elif foo > 0 and bar < 1: # Bottom
if r_y < 0:
return [rx, ry]
return [rx, ry + 1]https://stackoverflow.com/questions/64092456
复制相似问题