← 全部概念
操作手感 / 09
帧间隔
按每秒的速度移动,而非每帧的固定距离
交互演示
交互演示 · 移动指针或点击画面,观察变化
帧间隔是上一帧耗费的时间,以秒为单位。将各项速度乘以它,游戏在 30 fps 和 240 fps 下就能以相同的节奏运行。这里的帧率从 60 fps 降至 14 fps,每帧移动固定距离的赛车因此落后了。
适用场景
用实际经过的秒数计算移动、冷却和界面动画。以“单位/秒”表示的速度,只需乘一次经过的秒数,就能得到位移。
实现示例
不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。
dt = min(frameSeconds, 0.05)
position += velocity * dt
cooldown = max(0, cooldown - dt)
blend = 1 - exp(-smoothing * dt)常见错误
不要重复乘两次帧间隔。限制长帧的时间上限会丢弃一部分实际经过的时间;对于必须完整计算这段时间的模拟,使用固定时间步累加器更合适。
延伸阅读
Gaffer On Games:修正你的时间步(Fix Your Timestep)↗内容原作 Nicolas Zullo · 中文整理与交互改编