Time.timeScaleを0に設定すると、Fixed Updateなどの時間を参照する動作が一切聞かなくなり、物理演算も行われなくなります。
結果的に「ゲームを止める」のに便利な命令となります。
成果物
![gameover](https://sunagitsune.com/wp-content/uploads/2021/08/gameover.gif)
一時的にゲームの進行を停止し、一部の命令だけが動いている状態にします。
Time.timeScaleの使い方
ゲーム内の時間の速さを変える
time.timeScale = 値;
※0で停止、1で通常速度
time.timeScale = 値;
※0で停止、1で通常速度
![timescale1](https://sunagitsune.com/wp-content/uploads/2021/08/timescale1.jpg)
敵にダメージを喰らい、HPが0になったらゲームオーバー、という処理を書いてみます。
![timescale2](https://sunagitsune.com/wp-content/uploads/2021/08/timescale2.jpg)
条件を満たした時にTime.timeScale = 0;とすると、
![timescale3](https://sunagitsune.com/wp-content/uploads/2021/08/timescale3.jpg)
ゲーム内で流れる時間が「0」となり、Fixed Updateによる処理が全て停止します。
![timescale4](https://sunagitsune.com/wp-content/uploads/2021/08/timescale4.jpg)
ついでに曲も止めますが、timeScale = 0より前に実行しないと「時間が止まっている」ので命令が届かなくなります。
![timescale5](https://sunagitsune.com/wp-content/uploads/2021/08/timescale5.jpg)
UpdateはtimeScale = 0の状態でも実行されるので、たとえばフラグを立てておき、
![gameover](https://sunagitsune.com/wp-content/uploads/2021/08/gameover.gif)
timeScale = 0の時だけ別の動きをさせておく、といったこともできます。
![timescale6](https://sunagitsune.com/wp-content/uploads/2021/08/timescale6.jpg)
ボタンを押したりといった操作も受け付けます。リスタートをするなら現在のシーンを再読み込みするなどしますが、
![timescale7](https://sunagitsune.com/wp-content/uploads/2021/08/timescale7.jpg)
その際は忘れずにtimeScaleを1に戻し、余計なフラグは切っておくようにします。
![](https://sunagitsune.com/wp-content/uploads/2021/07/computer-1343393_1280-160x90.jpg)
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント