在Corona SDK中为tileset生成等距网格(示例代码)

2021-05-03

栏目: 类库 ·

简介  这篇文章主要介绍了在Corona SDK中为tileset生成等距网格(示例代码)以及相关的经验技巧,文章约3243字,浏览量375,点赞数8,值得推荐!

我导入了一个瓷砖制作的等轴测图到Corona SDK,现在我正在尝试覆盖一个网格图层。我已经对等距网格进行了大量阅读,但似乎它们都参考了高度为宽度一半的tilesets。 (例如128x64px)。我使用的tileset要求网格为256x149px,我想我必须编辑网格生成功能以适应变化。任何帮助将不胜感激!

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

Original Vectors: https://image.ibb.co/emXpQR/Screen_Shot_2017_12_18_at_1_35_19_PM.png

Edited Vectors (the ones commented out in code): 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

                    -- draw a diamond shaped tile
                    local vertices = { 0,-16, -64,16, 0,48, 64,16 }
                    -- MY EDITED VERTICES { 0,-37.25, -128,37.25, 0,111.75, 128,37.25 }
                    local tile = display.newPolygon(group, 0, 0, vertices )

                    -- outline the tile and make it transparent
                            tile.strokeWidth = 1
                            tile:setStrokeColor( 0, 1, 1 )
                            tile.alpha = .4

                            local tileWidth = 256
                            local tileHeight = 149

                    -- set the tile's x and y coordinates
                    local x = col * tileHeight
                    local y = row * tileHeight

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

                    -- make a tile walkable
                    gridRow[col] = 0
                  end
                  -- add gridRow table to the map table
                  j_map[row] = gridRow
               end
            end

正如您在屏幕截图中看到的那样,瓷砖在地图一侧转向。如果有人知道如何解决它或需要更多信息的信息让我知道!

答案

试试代码:

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

        -- draw a diamond shaped tile
        --local vertices = { 0,-16, -64,16, 0,48, 64,16 }
        -- MY EDITED VERTICES 
        local vertices = { 0,-37.25, -128,37.25, 0,111.75, 128,37.25 }
        local tile = display.newPolygon( group, 0, 0, vertices )

        -- outline the tile and make it transparent
                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 

        -- make a tile walkable
        gridRow[col] = 0
      end
      -- add gridRow table to the map table
      --j_map[row] = gridRow
   end

我从x得到了yand Isometric Tiles Math瓷砖位置的公式。祝好运:)


以上就是本文的全部内容,希望对大家的学习有所帮助,本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

相关文章

corona-6-3dsmax-hotfix1【CR6.1渲染器】汉化破解版

ruby 在rails中为具有关联的对象生成JSON

CR5.0(hotfix 2)渲染器破解版[Corona Renderer5.0]中文版免费下载与安装方法

如何在Hybris中为WSDL文件生成Java类?

text 在eXist-db中为xquery函数生成函数签名测试的脚本

[3dsmax] Corona Renderer 5超写实照片级渲染器3dsmax插件HOTFIX 2版

在VS中为C/C++源代码文件生成对应的汇编代码文件(.asm)

如何在firestore中为文档创建自定义自动生成的ID