【问题标题】:Screen to staggered isometric grid algorithm屏幕到交错等距网格算法
【发布时间】:2020-09-27 19:25:10
【问题描述】:

我正在使用 Kivy 和 Pytmx,我需要从地图坐标中获取 Grid Tile 以获得交错地图。

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

【问题讨论】:

    标签: python kivy tiles isometric staggeredgridlayout


    【解决方案1】:
    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]
    

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多