love2D Error: Bad argument #2 to 'rectangle' (number expected, got nil)
love2D Error: Bad argument #2 to 'rectangle' (number expected, got nil)
我不知道我做错了什么...我在 player.draw() 函数中遇到错误。它谈论的坏论点是在 love.graphics.rectangle() 方法中。它是说 v.x 是一个错误的论点。但它应该工作。 v.x 和 v.y 都应该有效。因为它访问 table 或数组中元素的字段,对吗?有人可以告诉我我做错了什么以及如何解决这个问题吗?非常感谢!这是我的代码:
require "scripts.player"
width = love.graphics.getWidth()
block = {}
block.width = 60
block.height = 10
block.speed = 150
block.timer = 0
block.timerLim = math.random(1,2)
block.spawnX = math.random(0, width - player.width)
function block.spawn(x,y)
table.insert(block, {x = x, y = y})
end
function block.move(dt)
for i,v in ipairs(block) do
v.y = v.y + block.speed * dt
end
end
function block.draw()
for i,v in ipairs(block) do
love.graphics.setColor(255,0,255)
love.graphics.rectangle("fill", v.x, v.y, block.width block.height)
end
end
function block.spawnHandler(dt)
block.timer = block.timer + dt
if block.timer > block.timerLim then
block.spawn(spawnX, -10)
block.timer = 0
block.timerLim = math.random(1,2)
block.spawnX = math.random(0, width - block.width)
end
end
-- Parent Functions --
function DRAW_BLOCK()
block.draw()
end
function UPDATE_BLOCK(dt)
block.move(dt)
block.spawnHandler(dt)
end
在函数 block.spawnHandler
中你的意思是 block.spawnX
而不是 spawnX
。
因为 spawnX
不存在,它的值为 nil,它进入 spawn 函数并被设置为坐标的 x 值,然后进入 rectangle
并且是错误的论点。
您可以在此处阅读更多相关信息以及如何防止它再次咬您:https://www.lua.org/pil/13.4.1.html
简而言之,lua 真的很奇怪,直到你 'fix' 它通过访问不存在的变量抛出错误而不是 return nil,以及大约 800 个类似的东西。一旦你 'fix' 所有这些东西,你就会有一些奇怪的东西,不再是 lua。
我不知道我做错了什么...我在 player.draw() 函数中遇到错误。它谈论的坏论点是在 love.graphics.rectangle() 方法中。它是说 v.x 是一个错误的论点。但它应该工作。 v.x 和 v.y 都应该有效。因为它访问 table 或数组中元素的字段,对吗?有人可以告诉我我做错了什么以及如何解决这个问题吗?非常感谢!这是我的代码:
require "scripts.player"
width = love.graphics.getWidth()
block = {}
block.width = 60
block.height = 10
block.speed = 150
block.timer = 0
block.timerLim = math.random(1,2)
block.spawnX = math.random(0, width - player.width)
function block.spawn(x,y)
table.insert(block, {x = x, y = y})
end
function block.move(dt)
for i,v in ipairs(block) do
v.y = v.y + block.speed * dt
end
end
function block.draw()
for i,v in ipairs(block) do
love.graphics.setColor(255,0,255)
love.graphics.rectangle("fill", v.x, v.y, block.width block.height)
end
end
function block.spawnHandler(dt)
block.timer = block.timer + dt
if block.timer > block.timerLim then
block.spawn(spawnX, -10)
block.timer = 0
block.timerLim = math.random(1,2)
block.spawnX = math.random(0, width - block.width)
end
end
-- Parent Functions --
function DRAW_BLOCK()
block.draw()
end
function UPDATE_BLOCK(dt)
block.move(dt)
block.spawnHandler(dt)
end
在函数 block.spawnHandler
中你的意思是 block.spawnX
而不是 spawnX
。
因为 spawnX
不存在,它的值为 nil,它进入 spawn 函数并被设置为坐标的 x 值,然后进入 rectangle
并且是错误的论点。
您可以在此处阅读更多相关信息以及如何防止它再次咬您:https://www.lua.org/pil/13.4.1.html
简而言之,lua 真的很奇怪,直到你 'fix' 它通过访问不存在的变量抛出错误而不是 return nil,以及大约 800 个类似的东西。一旦你 'fix' 所有这些东西,你就会有一些奇怪的东西,不再是 lua。