生成 Corona SDK 中的等距网格瓷砖集

我在 tiled 中制作了一个等距地图,并将其导入 Corona SDK,现在正在尝试叠加网格层。我阅读了许多关于等距网格的信息,但似乎它们都指的是高度是宽度的一半的瓷砖集。(例如128x64像素)。我使用的瓷砖集需要网格为256x149像素,我认为我必须编辑网格生成函数以适应这个变化。任何帮助都将不胜感激!

问题的截图(使用原始向量):

[原始向量:] (https://i.stack.imgur.com/0vUNB.png) [https://image.ibb.co/emXpQR/Screen\_Shot\_2017\_12\_18\_at\_1\_35\_19\_PM.png] (https://image.ibb.co/emXpQR/Screen_Shot_2017_12_18_at_1_35_19_PM.png)

[已编辑的向量(代码中已注释的向量):] (https://i.stack.imgur.com/0vUNB.png) [https://image.ibb.co/ikxOkR/Screen\_Shot\_2017\_12\_18\_at\_1\_35\_54\_PM.png] (https://image.ibb.co/ikxOkR/Screen_Shot_2017_12_18_at_1_35_54_PM.png)

网格生成代码:

function drawGrid()
               for row = 0, 16  do
                  local gridRow = {}
                  for col = 0, 9 do

                    -- 画一个菱形瓷砖
                    local vertices = { 0,-16, -64,16, 0,48, 64,16 }
                    -- 我编辑的顶点{ 0,-37.25,-128,37.25,0,111.75,128,37.25 }
                    local tile = display.newPolygon(group, 0, 0, vertices )

                    -- 绘制瓷砖的轮廓并使其透明
                            tile.strokeWidth = 1
                            tile:setStrokeColor( 0, 1, 1 )
                            tile.alpha = .4

                            local tileWidth = 256
                            local tileHeight = 149

                    -- 设置瓷砖的x和y坐标
                    local x = col * tileHeight
                    local y = row * tileHeight

                    tile.x = (x - y)
                    tile.y = ((tileHeight/2) + ((x + y)/2))

                    -- 让瓷砖可行走
                    gridRow[col] = 0
                  end
                  -- 将 gridRow 表添加到 map 表中
                  j_map[row] = gridRow
               end
            end

正如您在截图中看到的那样,瓷砖有点偏离地图的边缘。如果有人知道如何修复或需要更多有关信息,请让我知道!

点赞
用户7026995
用户7026995
尝试代码:

for row = 0, 16 do local gridRow = {} for col = 0, 9 do

    -- 绘制菱形状的瓷砖
    --local vertices = { 0,-16, -64,16, 0,48, 64,16 }
    -- 我修改过的顶点坐标
    local vertices = { 0,-37.25, -128,37.25, 0,111.75, 128,37.25 }
    local tile = display.newPolygon( group, 0, 0, vertices )

    -- 给瓷砖描边并使其透明
            tile.strokeWidth = 1
            tile:setStrokeColor( 0, 1, 1 )
            tile.alpha = .4

            local tileWidth = 256
            local tileHeight = 149

    tile.x = -(row - col) * tileWidth * 0.5
    tile.y = (row + col) * tileHeight * 0.5

    -- 使瓷砖可行走
    gridRow[col] = 0
  end
  -- 把 gridRow 表格添加到 map 表格中
  --j_map[row] = gridRow

end

```

我从等距瓦片数学中得到了计算瓷砖 xy 位置的公式。祝你好运 :)

2017-12-21 18:29:45