前回クリアパネルでゲームクリア、失敗した際の処理を実装しましたが、肝心のUnityちゃんがステージから落下したときの処理を忘れていました。
何も得点が条件に届かないだけがゲームオーバーではないですからね。Unityちゃんが床から落下した場合もゲームオーバーになります。
以前作成した落ちゲーの場合は、ゲームオーバー用のシーンを作って対処しましたが、今回はパネルで作りたいと思います。
Unityちゃんが落下したらゲームオーバーにしよう
スコアパネルを代用しようと考えましたが、既に色々なUIを織り込んでいるので、今回新たに落下ゲームオーバー専用のパネルを作ります。
パネルの編集の仕方はこれまで結構扱ってきたので大体分かりますよね。
Canvasを用意してその中にPanelを作りましょう。後はパネル上に「GAME OVER」と表示するテキストと「もう1度挑戦する」等のボタンを配置すれば準備OKです。
Unityちゃんがアタッチされたスクリプトを修正する
Unityちゃんの位置を把握する必要があるので、Unityちゃんがアタッチされているスクリプトを開きましょう。
publicでパネルを宣言して、もしUnityちゃんのY座標が「-10.0f」より小さければゲームオーバーとしパネルをアクティブにします。
このままだとタイマーが減り続けるので「Time.timeScale = 0;」で時を止めよう。
時を止めないと、タイマーが0になり次第コルーチンによってクリアパネルが表示されてしまいます。こうなるとパネル同士が被ってしまうので、非常に見た目が悪いです。
それを回避するために、時を止めるようにします。
そして、「もう1度」のボタンを押されたらスタートメソッド内の「Time.timeScale = 1;」で元に戻してあげましょう。
スクリプトを保存したら、パネルの実体を渡してゲームオーバーパネルを非アクティブにしてゲームを実行してみましょう。
このように、Unityちゃんが落下するとゲームオーバーパネルが表示されます。
ちなみに、ボタンの処理は、ゲームシーンを再読み込みするだけなので前回作ったリトライ用のスクリプトをそのまま使うと良いですよ。