C# Trouble Расчет дельты времени
Я пытаюсь создать систему синхронизации для игры, написанной на C#, и у меня возникают проблемы с вычислением дельта-времени.
Вот мой код:
private static long lastTime = System.Environment.TickCount;
private static int fps = 1;
private static int frames;
private static float deltaTime = 0.005f;
public static void Update()
{
if(System.Environment.TickCount - lastTime >= 1000)
{
fps = frames;
frames = 0;
lastTime = System.Environment.TickCount;
}
frames++;
deltaTime = System.Environment.TickCount - lastTime;
}
public static int getFPS()
{
return fps;
}
public static float getDeltaTime()
{
return (deltaTime / 1000.0f);
}
Кажется, что подсчет FPS работает правильно, но дельта-время кажется быстрее, чем должно быть.
Любая помощь приветствуется.:)
1 ответ
Решение
Значение System.Environment.TickCount изменяется во время выполнения вашей функции, что заставляет deltaTime двигаться быстрее, чем вы ожидаете.
Пытаться
private static long lastTime = System.Environment.TickCount;
private static int fps = 1;
private static int frames;
private static float deltaTime = 0.005f;
public static void Update()
{
var currentTick = System.Environment.TickCount;
if(currentTick - lastTime >= 1000)
{
fps = frames;
frames = 0;
lastTime = currentTick ;
}
frames++;
deltaTime = currentTick - lastTime;
}
public static int getFPS()
{
return fps;
}
public static float getDeltaTime()
{
return (deltaTime / 1000.0f);
}