游戏循环更新方法中使用的时间增量或时间戳是多少?

ope*_*rog 0 opengl-es game-engine cocos2d-iphone runloop ios

例如在cocos2D中:

- (void)update:(ccTime)delta
Run Code Online (Sandbox Code Playgroud)

谁能解释这些时间增量或时间戳用于什么?它们如何与游戏世界的更新相关?是因为我们不能可靠地知道fps而不应该只依赖于基于-update调用的增量属性更新?

use*_*640 5

重要的是使框架独立运动.通常,您考虑自上次更新呼叫以来的时间内的任何角色移动.

这是为了确保您的游戏在各种性能的设备上表现相同.如果每帧移动一个字符1个像素,那么在运行速度为60fps的设备上,该字符的移动速度将是获得30fps的设备的两倍.

通过例如增量时间影响所有移动代码,您可以确保所有设备的行为都相同.

使运动帧速率独立是很简单的.将运动矢量乘以deltaTime之类的东西将实现这一目标.

  • 如果视觉效果(视图)没有与游戏逻辑(模型)分离,那就不那么简单了.你最终可能会遇到游戏逻辑问题,例如在低帧速率下穿越碰撞:http://www.learn-cocos2d.com/2013/10/game-engine-multiply-delta-time-or-not/ (2认同)