В настоящее время я занимаюсь разработкой этой ритмической игры на языке lua (поверх движка c ++), и у меня возникают проблемы с сохранением устойчивой позиции для текущей песни.
Положение точки воспроизведения, которую движок дает мне обновления постепенно, поэтому я получаю новую каждые 2, 3 или 4 кадра. Но мне нужно, чтобы спрайты плавно двигались с ритмом и прочим.
Поэтому я просто отслеживаю собственную переменную playhead, которую инициализирую в 0, а затем постоянно добавляю к ней дельта-время. Эта переменная в конечном итоге не синхронизируется с реальной точкой воспроизведения, поэтому каждый раз, когда я получаю новую точку воспроизведения (или «новый шаг»), я исправляю свою переменную, используя среднее значение между этими двумя значениями.
Это, однако, приводит к прерывистому движению.
Как лучше всего перевести мою переменную playhead в ступенчатую?
Вот код, который я исключаю каждый кадр:
— добавить дельту к моей собственной переменной playhead
playhead = playhead + delta_time
— если есть новое значение stepped_playhead, исправьте мою точку воспроизведения
if stepped_playhead ~= last_stepped_playhead then
playhead = (playhead + stepped_playhead) / 2
last_stepped_playhead = stepped_playhead
end
Задача ещё не решена.
Других решений пока нет …