クリア条件を設定し結果に応じてパネルを表示する【Unity】

今回はゲームの仕様をがらっと変えてみたいと思います。

現在は、ハイスコアを狙ってひらすらフルーツをキャッチしていくゲームですが、ミッションを用意して達成したらクリア、失敗したらゲームオーバーにしたいと思います。

「制限時間以内に○○点以上を目指せ!」と言った感じですね。

クリアしたら、難易度が上がった次のステージに進んでいくというスタイルになります。

スポンサーリンク

ゲームにクリア条件(ミッション)を設定しよう

タイトルシーンの作成

タイトル画面も作っていなかったのでまずは、クリア条件画面に繋ぐためにタイトル画面から作ります。

フルーツキャッチのタイトル画像

タイトル画面の作り方に関しては、過去の記事で紹介したので参考にしてください。

おしゃれなタイトル画面の作り方について【Unity】
現在制作中の的当てゲームですが、まだタイトル画面を作っていませんでした。 リザルト画面があるのに、タイトル画面が無いのはおかしな話なので、今作っている的当てゲームを使っておしゃれなタイトルの作り方について紹介したいと思います。 ...

一応「ゲームスタート」と「ゲーム終了」ボタンを用意しました。

この辺のデザインはお好みでお任せします。

クリア条件のシーン作成

次に、クリア条件を表示するために新しいシーンを作ります。

ステージ1のルール説明

シーン名を「rule1」にしてこのようなレイアウトにしてみました。

ステージ1紹介のヒエラルキーウィンドウ

ヒエラルキーウィンドウはこんな状態です。

初めてプレイするはずなので、各フルーツが何点なのか分かるようにしています。

クリア条件としては、最初のステージなので比較的優しめにしました。考え方としては制限時間と得点という要素を活かすとクリア条件を設定しやすいと思います。

最初のタイトル画面で「ゲームスタート」ボタンを配置していますが、厳密にいうとこのシーンの「Start!!」ボタンが真のゲームスタートボタンになりますね。

各シーンに遷移させるスクリプトを作成

タイトルシーンからルールシーン、ルールシーンからゲームシーンに遷移させましょう。

タイトルシーンに戻って「Firststart」と「End」スクリプトを作成します。

・Firststart.cs

ルール画面に遷移するスクリプト

・End.cs

ゲームを終了するスクリプト

SceneManager.LoadSceneを使ってルールシーンに飛ばしましょう。

保存したら各ボタンにアタッチしてOn Click()の設定を行います。

・「Start」ボタン

スタートボタンを設定する

・「Finish」ボタン

フィニッシュボタンを設定する

上の流れと同じように「rule1」シーンからゲームシーンに遷移させるスクリプトを作ってボタンにアタッチしてください。

このままゲームを実行するとエラーになるので、各シーンを「Build Settings」から登録します。

シーンを追加する

ゲームを実行してシーンが正しく遷移されるか確認しましょう。

クリア条件に対応するボタンとテキストをパネル上に作成

ゲームシーンに戻って、クリア出来たらステージ2へ、失敗したらリトライを促すテキストとボタンをそれぞれ用意します。

クリア条件を表示するパネルの構造

スコアパネル内に「NextButton」「RetryButton」「ClearText」「FailureText」を作成。

ゲーム実行時は表示しておく必要はないので、非アクティブ状態にします。

各テキストは「クリア!」や「失敗!」等のテキストを入力しておきましょう。

ボタンテキストには「次のステージへ」と「もう1度挑戦する」みたいな感じで。

クリア条件をスクリプトに追加する

それでは、先ほど設定したクリア条件をスクリプトに追加していきます。

前回実装したハイスコアの処理はコメントアウトしています。ミッション成功か失敗というゲームですので、ハイスコアは不要かな。ただせっかく作ったのでコメントアウトって感じです。

変更したのはコルーチンの中ぐらいですね。

300点以上獲得出来たらクリアに対応したボタンとテキストをアクティブに。そうじゃなければ失敗に対応したボタンとテキストをアクティブにします。

あと、パーティクルシステムもクリアしたときのみ再生するようにしています。失敗してるのに華やかな演出はおかしいですからね。

各テキストとボタンをアタッチする

スクリプトを保存したら「GameObject」を選択して、各UIをアタッチします。

後はボタンを押した際にシーン遷移させるスクリプトを作成すれば良いですね。

「NextButton」で次のステージに進むようにし「RetryButton」で自シーンを読み込んで再プレイ出来るようにしてください。

ゲームを実行して動作確認

※30秒で300点以上って思った以上に難しかったので200点以上でクリア出来るように変更w

・クリアした場合

クリア画面の一例

・クリアできなかった場合

クリアできなかった場合に表示する画面

こんな感じで、パネル上に結果に応じたボタンとテキストが表示されるはずです。

今回行った工程を繰り返すことで、ステージの数を増やしていけると思います。

もう1度プレイするとUnityちゃんが動かない時の対策

もう1度プレイしようとすると、ジョイスティックでUnityちゃんが動かない場合があります。

Unity Standard Assets – CrossPlatformInputのモバイルスティックが、次のシーン読み込みで動かない問題解決
UnityのStandard Assets - CrossPlatformInputのモバイルスティックが、次のシーンを読み込んだあと動かない場合があったので、以下の方法で解決。Standard Assets/CrossPlatformIn

そんな時はこちらの記事を参考に、ジョイスティックのスクリプトを修正してください。