有人可以帮我把2d地图转换成等距地图吗?

时间:2015-07-26 09:06:38

标签: java arrays 2d isometric

我想请求帮助将从文本文件导入的2d地图转换为等轴测图地图格式。我已经浏览了很多,仍然是java的新手,我更像是“看看示例代码”而不是自我嘲笑。任何事情在这一点上都会有所帮助。我也看过这里>> How can i convert x-y position to tile x-y for isometric tile?<<这里>> Drawing Isometric game worlds<<我觉得我几乎就在那里,但我只是想通了。谢谢。

for(int row = rowOffset; row < rowOffset + numRowsToDraw; row++) {

        if(row >= numRows) break;

        for(int col = colOffset; col < colOffset + numColsToDraw; col++) {

            if(col >= numCols) break;
            if(map[row][col] == 0) continue;

            int rc = map[row][col];
            int r = rc / numTilesAcross;
            int c = rc % numTilesAcross;

            x = (col / Tile_H) + (row / Tile_W);
            y = (row / Tile_W) - (col / Tile_H);

            g.drawImage(
                tiles[r][c].getImage(),

                //(((y / Tile_HH) - (x / Tile_HW)) / 2) + col * tileSize,
                //(((y / Tile_HH) + (x / Tile_HW)) / 2) + row * tileSize,

                //x,

                //y,


                x + col * tileSize,
                y + row * tileSize,
                null
            );

        }

    }

1 个答案:

答案 0 :(得分:1)

以下是在iso坐标中转换2D坐标的公式:

对于[I,J]坐标 - &gt; (小心,I-J是这样的:0,1而不是原始坐标(以像素为单位)。

I = (y - x) * (tileWidth / 2)
J = (x + y) * (tileHeight / 2)

然后添加2个偏移(顶部和左侧以在屏幕中央显示地图)

但是我不确定你的问题是否是公式,因为我没有在java中编码。