我在 LOVE2D 中的四边形如何具有零值?

How does my quad in LOVE2D have a nil value?

我正在 LOVE2D 的游戏中进行第二次加电,我希望它做的是增加它最后一次碰撞的桨。但是,它给了我一个错误:

Error

powerups/PaddleGrow.lua:64: bad argument #2 to 'draw' (Quad expected, got nil)


Traceback

[C]: in function 'draw'
powerups/PaddleGrow.lua:64: in function 'render'
main.lua:630: in function 'draw'
[C]: in function 'xpcall'

我的四边形在 draw 函数中为 nil 值,尽管我实际上是在 Util 函数中分配了它:

--[[
    Simple function for making powerups.
]]
function GenerateQuadsPowerups(atlas)
    local x = 0
    local y = 0
    local counter = 1
    local quads = {}
    
    for i = 1, 3 do
        quads[counter] = love.graphics.newQuad(x, y, 8, 8, atlas:getDimensions())
    end
    
    return quads
end

我的绘制函数在依赖项中有这些帧和纹理,我添加了一些道具。我的相框是 table 的 3 次加电,但我的第二次加电不想显示。

function PaddleGrow:render()
    if self.inPlay then
        love.graphics.draw(textures['powerups'], frames['powerups'][2], self.x, self.y)
    end
end

为什么会变成这样?

您的代码似乎正在分配 quads table 的相同索引。

counter 在函数的开头定义了一次为 1,而您正在执行一个 for 循环,只将新的四边形分配给 1,三次。

你是说 quads[i] = love.graphics.newQuad(x, y, 8, 8, atlas:getDimensions()) 吗?

--[[
    Simple function for making powerups.
]]
function GenerateQuadsPowerups(atlas)
    local x = 0
    local y = 0
    local quads = {}
    
    for i = 1, 3 do
        quads[i] = love.graphics.newQuad(x, y, 8, 8, atlas:getDimensions())
    end
    
    return quads
end