(今回はこんなことを学びます)
・ゲームオーバー・シーンの作成の仕方
・ゲームオーバーの設定の仕方
(1)新しくシーンを作成する
まずは、前回(タイトルシーン作成)の復習です。
・「File」をクリック
・「New Scene」を選択してクリック
・もう一度「File」をクリック
・「Save Scene」を選択してクリック
・名前を「GameOver」にして「Save」
これで新しく「GameOver」シーンができました。
*「GameClear」シーンも全く同じ流れで作成してください。
(2)ゲームオーバーシーンとゲームクリアーシーンを作成する
・「GameOver」シーンをダブルクリック
・「Create」をクリック→「UI」を選択→「Canvas」を選択してクリック
次に、Canvasの上にパーツを置いていきます。
・「Canvas」を右クリック
・「UI」を選択
・「Image」を選択してクリック
・作成した「Image」の名前を「GameOverLogo」に変更
・「Import New Assets…」で「ゲームオーバー・ロゴ」に使用する画像をインポート
・インポートした画像を選択
・「Inspector」で「Texture」をクリック
・「Sprite(2D and UI)」をクリック
・「Apply」をクリック
・「Hierarchy」で「GameOverLogo」を選択
・「Assets」の中の「GameOverLogo」を「Source Image」にドラッグ&ドロップする
・ロゴの位置と大きさは「Rect Transform」で調整する。
・ここまでできたら「再生ボタン」を押して確認してみましょう。
*同じ手順を繰り返して「GameClear」シーンも作成しましょう。
*新しくシーンを作成したら必ず、「Build Settings」に追加します。
・「File」をクリック
・「Build Settings…」を選択してクリック
・「GameOver」シーンと「GameClear」シーンをドラッグ&ドロップで追加する。
・追加したら「×」で閉じる。
(3)ゲームオーバーのスクリプトを作成する
*「Main」シーンをダブルクリックしてシーンを切り替えてください。
まず、ゲームオーバーのルールを決めましょう。
今回は「ゲームフィールドの外に落ちたらゲームオーバー」にしてみます。
(ここがポイント!)
外に落ちた時ゲームオーバーにする方法
*「透明な床」を作成する。
*「それにぶつかったらゲームオーバー」になるようにする。
まずは、「透明な床」を作りましょう。
・「Create」をクリック
・「3D Object」を選択
・「 Plane」を選択してクリック
・床の「大きさ」はゲームフィールドがすっぽり入るくらいに設定します。
・床の「位置」はゲームフィールドの下にくるようにします。
・床の名前は「GameOverFloor」に変更しましょう。
・「GameOverFloor」を選択
・「Inspector」で「Mesh Renderer」のチェックを外しましょう。
白色の床が「透明」になりました。
(ここがポイント!)
「Mesh Renderer」のチェックを外すと、「透明だけどそこに存在するオブジェクト」を作成できます。これを応用すれば「隠し○○」を作れるようになります。
次に、ゲームオーバーのスクリプトを作成します。
・「C# Script」を作成し、名前を「GameOverFloor」に変更してください。
・「GameOverFloor」をダブルクリック
・下記のコードを記入しましょう。
using UnityEngine; using System.Collections; // ★この一行を追加 using UnityEngine.SceneManagement; public class GameOverFloor : MonoBehaviour { // ★このメソッド(命令ブロック)を記載 void OnCollisionEnter(Collision col){ if(col.gameObject.CompareTag("Player")){ SceneManager.LoadScene("GameOver"); } } }
・コードが書けたら「GameOverFloor」オブジェクトにドラッグ&ドロップしましょう。
・ここまでできたら「再生ボタン」を押してみましょう。
ボールを動かして、ゲームフィールドの外に落ちてみてください。
「GameOver」のシーンに切り替わったら成功です。
でもこのままだと何か味気ないですね。
なので、ゲームオーバーになったら「効果音」を鳴らしてみましょう。
「再生ボタン」を停止します。
*今度は「GameOver」シーンで作業しますのでシーンを切り替えます。
「GameOver」シーンをダブルクリック
効果音は「Main Camera」に付けることにします。
・「Hierarchy」で「Main Camera」をクリック
・「Add Component」をクリック
・「Audio」を選択してクリック
・「Audio Source」を選択してクリック
*ゲームオーバーに使いたい効果音を「Import New Assets」でインポートする。
・インポートした効果音を「Audio Clip」にドラッグ&ドロップする。
・「再生ボタン」を押してみましょう。
「GameOver」のロゴが表示されて、「効果音」が鳴れば成功です。
次は、一定時間が経過したら「タイトル画面(シーン)」に戻るように設定してみましょう。
(4)一定時間が経過したらタイトル画面に戻る設定
・「C# Script」を作成してください。
・名前を「GameOverController」に変更しましょう。
ダブルクリックして下記のコードを記入しましょう。
using UnityEngine; using System.Collections; // ★この一行を追加する using UnityEngine.SceneManagement; public class GameOverController : MonoBehaviour { // Update is called once per frame void Update () { // ★このコードを記載する // 8秒後にReturnToFile()メソッドを呼び出す。 Invoke("ReturnToFile", 8.0f); } // ★このメソッド(命令ブロック)を記載する void ReturnToFile(){ SceneManager.LoadScene("Title"); } }
(ここがポイント!)
・今回は「命令ブロック」が2つあります。Update()とReturnToFile()
・Invokeメソッドは「引数」が2つあります。最初の引数に「呼び出したい命令ブロック」を書いて、2つ目の引数に「時間」を書きます。
・今回の場合は、「ReturnToFile()の命令ブロックを8秒後に呼び出す」となります。
*「GameOverController」スクリプトは「Main Camera」にドラッグ&ドロップします。
ここまでできたら「再生ボタン」を押してみましょう。
8秒後にタイトル画面に切り替わったら成功です。
最後にゲームの流れができているか確認してみましょう。
・「Title」シーンをダブルクリックしてください。
・「再生ボタン」を押す。
・「Start」をクリック
・ゲーム画面に切り替わったら、Ballを操作して外に落とす。
・「GameOver」シーンに切り替わり、効果音が鳴る。
・8秒後、タイトル画面に戻る。
この流れができていたら成功です。
これでゲームオーバーの設定ができました。