【Unity】Time.deltaTimeを知らなくて右往左往した話
FPSによってゲーム内の移動やらなんやらの都合が悪かったんだけども、Time.deltaTimeを速度に掛け合わせてあげれば、その辺りを上手く調節してくれるらしい。
pos.x += (speed * Time.deltaTime * dx) * 5;
こんな感じ。
最後の5は、速度の補正用。定数で管理するほうが良いね。
こんな単純なことも知らないと相当苦労する。
入門書の1ページ目に載せといて欲しいレベル……。
それから、Unityはゲーム内速度をTime.timeScaleの値で簡単に調整出来るみたい。
//ポーズ if (GUI.Button (new Rect (0, 0, buttonSize, buttonSize), pauseTexture)) { Time.timeScale = 0; } //1/2速 if (GUI.Button (new Rect (buttonSize, 0, buttonSize, buttonSize), halfTexture)) { Time.timeScale = 0.5f; } //通常速度 if (GUI.Button (new Rect (buttonSize * 2, 0, buttonSize, buttonSize), normalTexture)) { Time.timeScale = 1; } //2倍速 if (GUI.Button (new Rect (buttonSize * 3, 0, buttonSize, buttonSize), doubleTexture)) { Time.timeScale = 2; } //4倍速 if (GUI.Button (new Rect (buttonSize * 4, 0, buttonSize, buttonSize), quadrupleTexture)) { Time.timeScale = 4; }
ただ、この値に依るゲーム内速度調整が適用されるのは、Time.deltaTimeの掛かっている数値か、FixedUpdate()の中で実行されている処理に限られるみたい。
Unity3D:timeScaleで一時停止やスロー再生 - devlog [naru design]
ありがたいことに、こちらで実際に試行した結果が確認出来る。
テラシュールウェア [Unity]Timescale0で時間を停止中でもアニメーションを再生したい
メニュー画面とかでの動きとの関係を考えるならば、こちらが参考になるかも。
ともかく、倍速再生が出来るようになって、デバッグ速度が格段に上がったから良かった。
しかし、FixedUpdate()なんて存在を初めて知った……。
もっと勉強しないとなー。