学博而后可约,事历而后知要。
一、真实世界中的小车
已知有一辆匀速前进的小车:
- 请尝试眨眼30次,限时一秒
- 请尝试眨眼60次,限时一秒
- 请思考,眨眼30次与眨眼60次后小车各走了多少路
二、游戏世界中的小车
- 同样眨眼30次,限时一秒,然而当你眨完眼,小车已经走到了真实世界第30秒才能走到的位置
- 同样眨眼60次,限时一秒,然而当你眨完眼,小车已经走到了真实世界第60秒才能走到的位置
三、问题的本质
游戏的工作方式是每秒钟渲染许多图像,每幅图像称为一帧,而且是循环进行的。我们用每秒帧数(FPS)来衡量一个游戏产生图像的速度。所以当游戏帧率(FPS)每秒计算60帧时,现实世界每经过一秒,游戏世界就经过60秒,即游戏里的一次刷新为现实世界中的一秒。
真实世界 | 游戏世界(30FPS) | 游戏世界(60FPS) |
---|---|---|
1秒 | 30秒 | 60秒 |
因此需要使用 delta 来平衡游戏与真实世界,表达式如下:
d
e
l
t
a
=
1
/
刷新率
=
1
/
F
P
S
delta=1/刷新率=1/FPS
delta=1/刷新率=1/FPS
这就是为什么引擎为我们提供了这个delta时间值,使我们的运动与我们的帧速率无关,从而 让游戏世界的时间流逝与现实时钟同步。