如何解决屏幕到交错等距网格算法
我正在使用Kivy和Pytmx,我需要从地图坐标获取Grid Tile以获取交错地图。
我的图块大小是:
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
现在我正在使用交错地图,但我不知道如何获取图块坐标。
中找到了C ++算法解决方法
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]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。