我正在使用 Love2D 为我和我的朋友创建一个小游戏,但是我遇到了一个问题:我想计算经过的时间,与帧速率无关。我正在尝试这个,但轻微的错误加起来,最终“秒”在 1/100 秒内通过。
local last_time = os.time()
function timeofday_update()
world_time = world_time + os.time() - last_time
end
我正在使用 Love2D 为我和我的朋友创建一个小游戏,但是我遇到了一个问题:我想计算经过的时间,与帧速率无关。我正在尝试这个,但轻微的错误加起来,最终“秒”在 1/100 秒内通过。
local last_time = os.time()
function timeofday_update()
world_time = world_time + os.time() - last_time
end
为什么不在程序开始时标记时间,或者无论何时开始(starting_time = os.time()),然后'当前经过的时间'就是os.time()-starting_time。不需要积累...
function make_stopwatch ()
local start = 0
local finish = 0
local function sw (cmd)
if cmd == "start" then
start = os.time()
return 0
end
if cmd == "lap" then
return os.difftime(os.time(), start)
end
if cmd == "stop" then
finish = os.time()
end
return os.difftime(finish, start)
end
return sw
end
演示:
> sw = make_stopwatch()
> =sw("start")
0
> =sw("lap")
16
> =sw "lap"
22
> =sw "lap"
28
> =sw "stop"
42
> = sw()
42
> = sw()
42
> = sw "start"
0
> = sw "lap"
8
>