Unity C#でゲーム内時間の進行を止める、ポーズをかける方法/Time.timeScaleの使い方

IT

Time.timeScaleを0に設定すると、Fixed Updateなどの時間を参照する動作が一切聞かなくなり、物理演算も行われなくなります。
結果的に「ゲームを止める」のに便利な命令となります。

スポンサーリンク

成果物

gameover
一時的にゲームの進行を停止し、一部の命令だけが動いている状態にします。

Time.timeScaleの使い方

ゲーム内の時間の速さを変える
time.timeScale = 値;
※0で停止、1で通常速度
timescale1
敵にダメージを喰らい、HPが0になったらゲームオーバー、という処理を書いてみます。
timescale2
条件を満たした時にTime.timeScale = 0;とすると、
timescale3
ゲーム内で流れる時間が「0」となり、Fixed Updateによる処理が全て停止します。
timescale4
ついでに曲も止めますが、timeScale = 0より前に実行しないと「時間が止まっている」ので命令が届かなくなります。
timescale5
UpdateはtimeScale = 0の状態でも実行されるので、たとえばフラグを立てておき、
gameover
timeScale = 0の時だけ別の動きをさせておく、といったこともできます。
timescale6
ボタンを押したりといった操作も受け付けます。リスタートをするなら現在のシーンを再読み込みするなどしますが、
timescale7
その際は忘れずにtimeScaleを1に戻し、余計なフラグは切っておくようにします。
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。

コメント