如何以有效的方式将相同类型的块组合成直角棱镜?

时间:2019-06-20 20:41:37

标签: lua roblox

我正在制作一个基于街区的城市建筑游戏,我试图找出一种将多个相同类型的街区合并到盒子中以进行优化的有效方法。因此,假设有一栋建筑物的墙壁和16x30x16块砖。与其绘制7,680个块,不如将它们绘制为一个具有重复纹理的巨型扁平矩形棱柱,这将大大提高效率。

我首先创建了条带,然后打算将其进一步合并到窗格中,但是这种方法似乎已经太慢了,因为它必须遍历plot(chunk)中的每个块,检查是否可以合并到当前条中,如果是,则将其合并。

预先感谢

local function Draw(plot)
    local blocks = plot.blocks
    local slabs = NewAutotable(3)
    local slabList = {}
    for y = 1, 32 do
        for x = 1, 16 do
            local currentSlab = NewSlab(x, y, 1, 1, 1, 1, blocks[x][y][1])
            slabs[x][y][1] = currentSlab
            slabList[#slabList + 1] = currentSlab
            for z = 2, 16 do
                if currentSlab[7] == blocks[x][y][z] then
                    GrowSlab(currentSlab, 0, 0, 1)
                else
                    currentSlab = NewSlab(x, y, z, 1, 1, 1, blocks[x][y][z + 1])
                    slabs[x][y][z] = currentSlab
                    slabList[#slabList + 1] = currentSlab
                end
            end
        end
    end
end

0 个答案:

没有答案