微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实体组件具有不同的渲染顺序

如何解决实体组件具有不同的渲染顺序

我遇到的问题与渲染顺序有关。我的俄罗斯方块字段渲染背景,俄罗斯方块块和网格都具有不同的渲染顺序。我掉落的俄罗斯方块块有自己的渲染代码。下落的俄罗斯方块被绘制在背景和网格之间。

所以我的问题是如果组件(即背景网格块)具有不同的渲染顺序,我如何以正确的顺序渲染实体?我必须以不同的方式构建我的程序,特别是我的俄罗斯方块领域。但我不知道最好的方法是什么。
https://github.com/MonkeyToiletLadder/Luatris

main.lua 片段

function love.draw()
    love.graphics.clear(0,0)
    field:draw()
    if current_tetromino then
        current_tetromino:draw()
    end
    love.graphics.setColor(1,1,1)
    love.graphics.print("score: " .. score,25 * 21)
end

tetromino.lua 片段

function tetromino:draw()
    local blocksize = self.field.blocksize
    local offset = self.field.position
    local state = tetromino.rotations[self.shape][self.rotation]
    local position = self.position
    love.graphics.setColor(tetromino.colors[self.shape])
    for j in ipairs(state) do
        for i in ipairs(state[j]) do
            if state[j][i] ~= 0 then
                love.graphics.rectangle("fill",offset[1] + (i + position[1] - 2) * blocksize,offset[2] + (j + math.floor(position[2]) - 2) * blocksize,blocksize,blocksize)
            end
        end
    end
end

field.lua 片段

function field:draw()
    local offset = self.position
    for j=1,self.height,1 do
        for i=1,self.width,1 do
            local color = {1,1}
            local shape = self[j][i]
            color = tetromino.colors[shape] or color
            love.graphics.setColor(unpack(color))
            love.graphics.rectangle("fill",offset[1] + (i - 1) * self.blocksize,offset[2] + (j - 1) * self.blocksize,self.blocksize,self.blocksize)
            love.graphics.setColor(0,0)
            love.graphics.rectangle("line",self.blocksize)
        end
    end
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。