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