Движение на основе синхронизации по времени не просто приложение к анимации. Движение является важной частью вашей игры, и использование движения, основанного на синхронизированнии по времени, гарантирует, что ваша игра будет одинаково идти на всех системах, независимо от их производительности.
Наиболее частое применение движения на основе времени находит место при перемещении объекта на определенное расстояние за определенное время. Например, предположим, что игрок переместил джойстик вправо, ваша игра реагирует на это, передвигая персонаж немного вправо, скажем, на 64 единицы за одну секунду, что эквивалентно 0.064 единицам за миллисекунду.
Используя небольшую функцию, вы можете вычислить количество единиц (вещественное число), на которое необходимо сдвинуть объект, основываясь на времени, прошедшем между кадрами.
float CalcMovement(DWORD ElapsedTime, float PixelsPerSec) {
return (PixelsPerSec / 1000.0f * (float)ElapsedTime);
}
Как вы видите, функция CalculateMovement использует следующую формулу:
PixelsPerSec / 1000.0f * ElapsedTime;
Переменная PixelsPerSec содержит число единиц, на которое вы хотите переместить ваш объект за одну секунду. Величина 1000.0 означает 1000 миллисекунд. В основном, вы вычисляете количество единиц движения за миллисекунду. Наконец, вы умножаете скорость движения в миллисекундах на ElapsedTime для вычисления перемещения.
Эта разновидность движения, основанная на синхронизации по времени, очень проста, однако ее нельзя упускать. Знание принципов движения, основанного на синхронизации по времени, лежит в основе более сложных методов, таких как плавное движение объектов по заранее определенной траектории.
⇐Анимирование с использованием временных меток || Оглавление || Движение вдоль траекторий⇒