[Unity]ポーズ・オプション画面作り方(Time.timeScaleを使った解説)Updateの動きを全て止めるやり方(画像付き)(2024)

動画のゲームはマウス操作で視点を移動させることができますが、Pキーでオプション画面を開くようにしています。オプション画面では敵の動きが止まり、操作キャラも移動と視点移動ができなくなっています。オプション画面の右下のボタンを押すと解除されていますね。

これの作り方を解説していきます。
画面をポーズするやり方を解説するのでそれ以外のやり方は基本スルーします。

まずは簡単にオプション画面を作ります。

そして何でもいいので画像赤丸のコードを入力します。
画像ではキャラクターを操作するスクリプトにコードを入れています。

軽く解説すると、コードはポーズ画面のオンオフを切り替えるための「bool」変数とさっき作ったオプション画面を読み込むための「GameObject」を書いています。

(画像1番目の赤丸の説明)次に新しく関数を作り、画像1番目の赤丸と同じコードを入力します。これはさっきのBoolをオンオフ切り替えるコードとオプション画面を非表示にするコードがありますね。
「Time.timeScale=1;」というコードがありますが、これが時間を操るコードになります。「1」と書いてありますが、これが1だと正常に時間が進み、「0」だと停止します。ここにはオプション画面を閉じるコードと時間を動かすコードがあるので、これはオプション画面を閉じてゲームを開始するコードが入っているというわけですね。

(画像2番目の赤丸の説明)ここには「FixedUpdate」とありますが、これは「Update」と同じで常にコードを処理してくれます。ただし「FixedUpdate」はさっきの「Time.timeScale」の影響を受けるという特性があります。
ただの「Update」だと「Time.timeScale」の影響を受けないので、止めたいものを「FixedUpdate」に書いて、時間を止めても動かしたいコードを「Update」に書くという流れになります。

(画像3番目の赤丸の説明)ここにはポーズするコードが書かれています。キーの「P」を押してさっきのBool変数がオンだと処理するように条件が書かれており、まずはBoolをオフにするコード、そしてオプション画面を表示するコードと「Time.timeScale」を「0」にするコードが書かれています。0にするということは時間を停止するということで、つまりここにはゲーム内の時間を止めてオプション画面を表示するというコードが書かれていますね。

下のスクリプトは操作キャラのスクリプトではなく、敵を動かすスクリプトです。ポーズ画面だと敵も止まっていてほしいので「Update」を「FixedUpdate」に変更します。この時必ず最初に「private」をつけてください。これは他のスクリプトの影響も受けるようにしてくれます。時間を停止するコードは操作キャラについていますが、このコードをつけることでこの敵のスクリプトにもその影響をつけることができます。

最後にオプション画面のボタンにさっきのオプション画面を解除する関数を付けて、スクリプトに追加したオプションのGameObjectに最初に作った画面を読み込みましょう。

こちらに他にもFPSシューティング作りで役立つ情報が集まった記事があるので良ければ参考にしてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です