我目前正在lua(在c ++引擎之上)开发这个节奏游戏,而我在为当前正在播放的歌曲保持稳定的播放头位置时遇到了麻烦。
引擎给我的播放头位置分步更新,所以每2,3或4帧我会得到一个新的。但我需要有一个稳定的精灵随着节奏和东西顺利移动。
所以我只是跟踪我自己的播放头变量,我在0中初始化,然后不断地为它添加增量时间。这个变量最终与实际的播放头不同步,因此每当我得到一个新的播放头(或“新的一步”)时,我都会使用这两个之间的平均值来修正我的变量。
然而,这会导致波动。将播放头变量放到步进变量中的最佳方法是什么?
这是我每个框架都要执行的代码:
- 将delta添加到我自己的播放头变量
playhead = playhead + delta_time
- 如果有新的steps_playhead值,请更正我的播放头
if stepped_playhead ~= last_stepped_playhead then
playhead = (playhead + stepped_playhead) / 2
last_stepped_playhead = stepped_playhead
end