UnityのTime.deltaTimeに関するメモ(備忘録)

ちょうど一週間前に受けたUnityの講座を復習中です。

(アフィリエイトで話題になったてっくあかでみーです)

サンプルテキストを解凍していなかった関係で、後半の講座をあまり聴けずに動画で再確認しています。

こういう時、動画で見直せると便利です。

30日間は見れるようですので、しっかり自分の糧にしなきゃ。

さて、その中でこれは重要だ!と思える項目がありましたので、

備忘録がわりにメモとして記載します。

他の方のUnityに関する記事をみると、とても専門的で…

自分ごときが載せても… という気がしますが、気にしない!

アウトプットしなきゃ意味ないしね~

内容は、Time.deltaTimeの活用について。

物体の旋回設定について

物体の旋回設定として、コードの一部を載せます

 if(Input.GetAxis(“Horizontal”) < 0.0){
transform.eulerAngles.y -= turnSpeed * Time.deltaTime;
}

transform.eulerAngles.y += turnSpeed * Time.deltaTime;

これは、右旋回の計算式となります。

Time.deltaTimeを使うとどうなるか?使わないとどうなるか??

いまから説明します。

Time.deltaTimeについて

ゲームには更新機能があり、動画を書き換えています。

fpsとは 【 frame per second 】 – 意味/解説/説明/定義 : IT用語辞典

Time.deltaTimeを使わない場合

turnSpeedを1とします。これはゲームが更新されるたび、+1ずつ回転するというもの。

30fpsの場合、1秒間に30回更新される。

ここで重要な事 ⇒ 端末によって変化がある

  • 新しい端末(30回更新)
  • 古い端末(処理落ちする事も。20回更新)

本来30回更新を想定しているのに20回しかできなかった

時間に差が出て公平差に欠ける

(反射神経を問われるゲームだとゆっくりの方が有利)

という問題が発生してしまいます。

Time.deltaTimeを使った場合

Time.deltaTime = 前回の処理時間から今回までの間の時間を表す数値

これを掛けておくと、1秒あたりturnSpeed分だけ回転するようになります。

<例>

0.1秒で更新 同じ間隔で10回計算される場合

⇒1回の計算で可算される数 = turnSpeedの0.1倍

つまり、 10回(1秒分)行えば、turnSpeed分可算される 10×0.1

0.05秒で更新 同じ間隔で20回計算

⇒1回の計算で可算される数 = turnSpeedの0.05倍

つまり、20回(1秒分)行えば、turnSpeed分可算される 20×0.05

間隔時間が変わっても、1秒間でturnSpeed分の回転がされるようになります。

これなら新しい端末でも古い端末でも公平になりますね~

この仕組みを可変フレームレートといい、多くのゲームの基本となっています。

なるほど~。なかなか理解できなかったので、何回も動画を戻してはメモしてみました。