问题描述
我正在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'
虽然我实际上是在Util函数中为其分配的,但我的Quad在draw函数中为nil值:
--[[
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,atlas:getDimensions())
end
return quads
end
我的画图函数在Dependencies中有这个框架和纹理,我添加了powerups作为一种。我的帧是一张3张道具的桌子,但我的第二副道具却不想显示。
function PaddleGrow:render()
if self.inPlay then
love.graphics.draw(textures['powerups'],frames['powerups'][2],self.x,self.y)
end
end
为什么会变成这样?
解决方法
您的代码似乎分配了quads
表的相同索引。
counter
在函数的开头被定义为1,并且您正在执行一次for循环,该循环仅将新quad分配为1,三次。
您是说quads[i] = love.graphics.newQuad(x,y,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,atlas:getDimensions())
end
return quads
end