В Unity3D использование Time.DeltaTime не приводит к независимости от частоты кадров

Я пытаюсь перебросить некоторые предметы на определенное заданное расстояние в течение определенного периода времени. Я использую Time.DeltaTime, чтобы добиться независимости от частоты кадров. Однако при принудительной задержке с помощью функции с очень высокой производительностью (снижает частоту кадров до теоретических 10-15 кадров в секунду), мои объекты перемещаются НАМНОГО медленнее, чем должны, даже если они должны двигаться с постоянным временем, независимо от частоты кадров (они занимают примерно вдвое длиннее, 4 с вместо 2).

Что еще более странно, так это то, что расчетный FPS (1.0f / Time.deltaTime) остается постоянным (примерно 66 FPS). Когда я показываю время, которое потребовалось для завершения lerp (добавляя time.deltaTimes), оно показывает 2 секунды (это желаемое время, однако фактическое время, которое потребовалось, как минимум в 2 раза больше).

Может ли кто-нибудь помочь мне разобраться в том, что происходит?

    var startTime = 0.0;
    while(startTime < 2.0){
        yield;
        startTime += Time.deltaTime;
        transform.localPosition = Vector3.Lerp(Vector3(0.0,0.0,0.0), Vector3(0.0,10.0,0.0), startTime/2.0);
    }

person Michael Shaevitch    schedule 07.08.2013    source источник
comment
Покажите код, в котором вы применяете дельту?   -  person McAden    schedule 07.08.2013
comment
Код выглядит так, как будто он должен работать. В чем ценность Time.timeScale?   -  person McAden    schedule 07.08.2013


Ответы (1)


Проверьте настройки времени вашего проекта (в меню «Правка» -> «Настройки проекта» -> «Время»), если ваш Максимально допустимый временной шаг достаточно высок. Это значение должно быть достаточно высоким, чтобы обеспечить желаемый минимальный FPS. Например, Max.Timestep, равный 0,1, дает 10 кадров в секунду.

person David Menard    schedule 07.08.2013