我正在使用requestAnimationFrame在我的游戏中绘制玩家。其中一名球员比其他人更快。我跟他做了一些检查,他告诉我他的显示器刷新率为120hz。我假设这种方法可以比其他方法更快地处理帧,从而提高移动速度。关于我如何解决这个问题的任何想法?
由于
使用的垫片层如下:
// shim layer with setTimeout fallback
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(/* function */ callback, /* DOMElement */ element){
window.setTimeout(callback, 1000 / 60);
};
})();
答案 0 :(得分:1)
没有保证帧率。但是,您可以使用简单的计时器强制使用近似帧速率:How to solve different FPS in requestAnimationFrame on different browsers?
答案 1 :(得分:0)
requestAnimationFrame
没有保证费率。如果它想要它可以以2Hz发射。
您需要使游戏循环功能与呼叫之间的时间无关。大多数游戏通过计算渲染步骤之间经过的毫秒数,然后根据已经过了多长时间制作游戏对象来实现此目的。
答案 2 :(得分:0)
将requestAnimationFrame视为更新/重绘的机会。您仍应将更新过程建立在已经过了多长时间的基础上。
例如,如果玩家可以在1秒内移动100px并且RAF每隔0.1秒发射一次,则需要每次更新10px
答案 3 :(得分:0)
正确,requestAnimationFrame
没有保证速率,但您可以使用它的回调的时间戳参数测量 requestAnimationFrame
调用之间的时间差,然后创建一个动画来计算应该发生的情况时长。
此 CodePen 链接显示了该 https://codepen.io/sassano/pen/wvgxxMp 的示例。