【Unity】なんでdeltatimeをかけるのか

deltatimeとは何か

Unityのリファレンスでは以下のように記載されている。

最後のフレームを完了するのに要した時間(秒)(Read Only)

難しいですね。
下記のような記載もありました。
I want to move this object 10 meters per second instead of 10 meters per frame.

一秒間に10m動かしたいのか、それとも1フレーム当たり10m動かしたいのか…

1フレームのレンダリング間隔はそれぞれ

パラパラ漫画のように画像が連続されて表示することによりゲームは動きを表現しています。
この画像を生成する(レンダリング)の間隔は60,50,30フレーム/秒など環境(表示装置等)によって変化するそうです。
なので、deletetimeを使用しないで

Void Update(){
transform.position.x += 1 ;
}

のような書き方をしてしまうと1フレームごとに1m進むようになってしまい、環境によって速くなったり遅くなったりしてしまいます。

環境に影響を受けずに速度を指定する方法が必要

deltatimeには最後のフレームを完了するのに要した時間(秒)が格納されています。
50フレーム/秒の環境では、deltatimeは0.02秒だと考えられます(1 ÷ 50 = 0.02)。
つまり下記のようなコードを書くと

Void Update(){
transform.position.x += 1 * 0.02;
}

x座標に位置が1フレームごとに0.02mづつ移動することになり、1秒でちょうど1m進む計算になります。
まあとりあえずかけとけばよさそうでした。
勉強すべきことが多いですね。