【问题标题】:How does my quad in LOVE2D have a nil value?我在 LOVE2D 中的四边形如何具有零值?
【发布时间】:2020-12-07 05:37:40
【问题描述】:

我在 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'

我的 quad 在 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

我的绘图功能在 Dependencies 中有这些框架和纹理,我添加了 powerups 作为一种排序。我的框架是一个包含 3 个通电的表格,但我的第 2 个通电不想显示。

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

为什么会变成这样?

【问题讨论】:

    标签: lua null game-engine love2d


    【解决方案1】:

    您的代码似乎分配了quads 表的相同索引。

    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
    

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      相关资源
      最近更新 更多