転がる先の杖

多趣味・多動をモットーに、転がり続けながら己を磨く日々を綴ります

Time.deltaTimeを学んだ(備忘録)

スポンサーリンク

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

サンプルテキストを解凍していなかった関係で、後半の講座をほとんど聴けなかった動画で再確認!

 

こういう時、動画で見直せると便利♪ 30日間は見れるので、しっかり自分の糧にしなきゃ。

 

さて、その中でこれは重要だ!と思える項目がありましたので、備忘録として記載します。

 

他の方のUnityに関する記事をみると、とても専門的で。。 自分ごときが載せても... という気がしますが、気にしない!! アウトプットしなきゃ意味ないしね~

 

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

 

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

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

 

transform.eulerAngles.y += turnSpeed * 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分の回転がされるようになります。これなら新しい端末でも、古い端末でも、公平になりますね~

 

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

 

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

 

こんな記事を書いておきながら、JSやプログラミングは全然手をつけていない... さっさと勉強しなきゃ(・・;)!