赛车游戏,汽车在更快的计算机上移动得更快

Dog*_*Dog 5 frame-rate sfml

我理解为什么会这样做,但我真的不知道如何防止这种情况.所以场景是,每一帧我都按照一定的预定像素移动汽车.当我使用慢速或更快的计算机时会发生什么......好吧,我每秒钟获得的帧越来越少,因此汽车移动得更慢或更快.我想知道如何防止这种情况.

我怀疑使用任何库都会遇到同样的问题...这是我第一次做这样的实时工作.

Doc*_*own 12

我怀疑你当前的代码看起来像这样

 // to be called every frame
 void OnEveryFrame()
 {
     MoveCar();
     DrawCarToScreen();
 }
Run Code Online (Sandbox Code Playgroud)

但它应该是这样的:

 // to be called - for example - 50 times per second:
 void OnEveryTimerEvent()
 {
     MoveCar();
 }

 // to be called every frame
 void OnEveryFrame()
 {
     LockTimerEvents();
     DrawCarToScreen();
     UnlockAndProcessOutstandingTimerEvents();
 }
Run Code Online (Sandbox Code Playgroud)

当然,你必须设置一个相应的计时器事件.


Art*_*yom 10

根据计时器移动汽车而不是帧速率.即汽车模型应独立于显示表示.