'I'm getting an error: "attempt to compare nil with number" in Lua with LOVE2d
I'm trying to make my first game with lua & love, it's a simple button clicker game that counts how many times you click a randomly appearing button. I'm trying to add a timer that counts down from 20 on the screen (and eventually make it so that an end screen appears when the timer hits 0).
function love.update(dt)
t = t + 0.01
end
function love.load (timer)
while t > 0 do
if t % 1 == 0 then
timer = 1 + timer
end
end
end
But I get this error: "attempt to compare nil with number"
I've searched and found tonumber()
but I don't know how to use it properly.
I'm not even sure that this is the best/a way to make a timer... help?
Solution 1:[1]
love will call your love.load
. When evaluating your while condition t > 0
it will throw this error because t is not a number but a nil value.
You need to initialize t with a number value befor you can compare it with another number.
I don't mean this offensive but your code does not make too much sense.
First of all you never initialized t
with a value. So you cannot do any operations on it.
function love.update(dt)
t = t + 0.01
end
love.load is executed once at the beginning of your game. timer
is actually a table value containing the command line arguments to your game. So adding increasing it by 1 does not make any sense.
function love.load (timer)
while t > 0 do
if t % 1 == 0 then
timer = 1 + timer
end
end
end
Even if t
was a number, t % 1
is always 0
. So comparing it with 0
doesn't make sense. Plus your code doesn't do anything aside from attempting to increase values by 1 or 0.01 respectively.
Make sure you refer to the love and Lua manuals for everything you use.
https://love2d.org/wiki/love.run <- this is very important so you understand how those functions are executed.
Solution 2:[2]
try adding:
function love.load()
t = 0
end
i also noticed the while t > 0 do
in love.load()
, this will not work as you expect, instead try putting it in love.update(dt)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Piglet |
Solution 2 |