私は JavaScript でゲームに取り組んでおり、次のようにゲーム ループをセットアップしていますrequestAnimationFrame
。
loop: function () {
game.updateSomething();
if (game.running) {
game.tick++;
requestAnimationFrame(game.loop);
}
},
私のゲームには作業ループがあり、オブジェクトを移動できます。それで問題ありませんが、たとえば、このループ内のアクションを毎秒に制限したい場合、どうすればこれを達成できますか? を使用してすべてのティックの時間を記録new Date()
し、前のループ生成で計算した時間と比較して、差をテストする必要がありますか? このような:
latest: null,
loop: function () {
var last = this.latest;
this.latest = new Date().getTime();
var every = 200;
if (Math.floor(last/every) != Math.floor(this.latest/every)) {
console.log('do something');
game.updateSomething();
};
if (game.running) {
game.tick++;
requestAnimationFrame(game.loop);
}
},
これは本当に厄介なようです。そのティックで床の時間が異なるときにtrueを返す関数にこれをラップしても、気分が悪いだけです...グーグルで試しましたが、これに対処するものは見つかりませんでした具体的には。
他の JavaScript ゲームは、定期的に発生する必要があり、メインのゲーム ループにも存在するものをどのように処理しますか?