ちょうど一週間前に受けた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について
ゲームには更新機能があり、動画を書き換えています。
↓
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分の回転がされるようになります。
これなら新しい端末でも古い端末でも公平になりますね~
この仕組みを可変フレームレートといい、多くのゲームの基本となっています。
なるほど~。なかなか理解できなかったので、何回も動画を戻してはメモしてみました。