opiop65が既に述べたように、デルタ時間は単に最後のフレームの開始と現在のフレームの開始の間に費やされた時間です。
それはどのように機能しますか?
デルタ時間は、ナノ秒、ミリ秒 (<- 通常はこれが標準です)、または秒など、任意の種類の単位にすることができます。あなたが言ったように、デルタ時間は、ゲームが 60FPS で実行されている場合は 16、ゲームが 30FPS で実行されている場合は 32 です。理由は簡単です: ゲームを毎秒 60 フレームで実行するには、1000/60 (= 16.666667) ミリ秒ごとにフレームを生成する必要がありますが、30 フレームで実行する場合はフレームを生成する必要があります。 1000/30 (= 33.333333) ミリ秒ごと。
しかし、なぜデルタ時間を使用するのでしょうか?
フレーム依存ではなく、時間依存の動きやあらゆる種類のものを実行したいので、デルタ時間を使用します。ゲームのキャラクターの 1 人を 1 秒あたり 1 単位水平に移動させたいとしましょう。どうやってそれをしますか?明らかに、キャラクターの位置の X 値に 1 を追加することはできません。これは、1*x
1 秒あたりの移動回数x
が FPS に等しいためです (キャラクターをフレームごとに更新すると仮定)。つまり、誰かが 1 FPS でゲームを実行すると、そのキャラクターは 1 秒あたり 1 ユニット移動し、5000 FPS でゲームを実行すると、そのキャラクターは 1 秒あたり 5000 ユニット移動することになります。もちろん、それは受け入れられません。
彼は更新ごとにキャラクター ユニットを移動すると言うこともできますが、1/16.6667
1 FPS を使用している場合は1/16.6667
、5000 FPS で実行している人物とは対照的に、1 秒あたりのユニットを移動して、 5000*(1/16.6667)
1 秒あたりのユニットを移動します。
はい、V-Sync を有効にすることはできますが、60Hz ではなく 120Hz (またはそれ以上) のモニターを使用している場合はどうでしょうか? はい、フレームレートをロックできますが、プレイヤーはそれについてあまり満足しません. また、ゲームが 60FPS を下回ったときにキャラクターの速度が低下するのを止めることはできません。ならどうしよう?
救助へのデルタ時間!更新ごと
にキャラクターを移動するだけです。
ゲームが高い FPS で実行されている場合はデルタ時間が短く、ゲームが低い FPS で実行されている場合は高いため、より高い FPS でゲームを実行しているキャラクターは遅くなります (そのため、彼はより少ない量でより頻繁に動きます)。より低い FPS でゲームを実行する方が速く (そのため、より頻繁に大量に移動することはありません)、最終的には同じ時間で同じ距離を移動します。1*delta
デルタ時間で乗算するときに使用する単位は重要であることに注意してください。
ミリ秒を使用する場合、60FPS では、デルタはフレームごと16.6667
に1*16.6667
=移動することになります。16.6667
ただし、デルタ時間を秒単位で測定する場合、60FPS ではデルタ時間は、キャラクターがフレームごとにユニット0.016667
を移動することを意味します。
これは心配する必要はありません。覚えておいてください。0.016667