Кадр независимого времени в Луа? - PullRequest
1 голос
/ 22 апреля 2011

Я использую Love2D, чтобы создать небольшую игру для своих друзей, но у меня возникла проблема: я хочу вычислить прошедшее время, независимо от частоты кадров.Я пытаюсь это, но небольшая ошибка добавляет, и в конечном итоге «секунда» проходит в 1/100 секунды.

local last_time = os.time()

function timeofday_update()
    world_time = world_time + os.time() - last_time
end

Ответы [ 2 ]

5 голосов
/ 22 апреля 2011

Почему бы не отметить время в начале программы или в начале каждого случая (начальная_время = os.time ()), а затем 'текущее прошедшее время' просто os.time () - начальная_время. Нет необходимости в накоплении ...

2 голосов
/ 22 апреля 2011
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
> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...