屏幕到交错等距网格算法

2024-09-27 22:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在与Kivy和Pytmx合作,我需要从交错地图的地图坐标中获取栅格平铺

mymap

我的瓷砖尺寸是:

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++中找到了算法enter link description here


Tags: 地图widthmw瓷砖tileheightspriteround
1条回答
网友
1楼 · 发布于 2024-09-27 22:28:44
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]

相关问题 更多 >

    热门问题