2

ゲームでプレイヤーを描画するために requestAnimationFrame を使用しています。プレイヤーの 1 人が他の誰よりも速く動いています。彼に確認したところ、モニターのリフレッシュ レートは 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);
          };
})();
4

4 に答える 4

1

requestAnimationFrame保証レートはありません。必要に応じて 2Hz で発射することもできます。

呼び出し間の時間に関係なく、ゲーム ループ機能を作成する必要があります。ほとんどのゲームでは、レンダリング ステップ間で経過するミリ秒数を計算し、経過時間に基づいてゲーム オブジェクトをアニメーション化することでこれを行います。

于 2013-05-22T15:38:21.857 に答える
0

requestAnimationFrame を更新/再描画の機会と考えてください。経過した時間に基づいて更新プロセスを行う必要があります。

たとえば、プレーヤーが 1 秒で 100 ピクセル移動でき、RAF が 0.1 秒ごとに発火する場合、毎回 10 ピクセルを更新する必要があります。

于 2013-05-22T15:38:32.063 に答える