[16]ゲームオーバーを作ろう

(今回はこんなことを学びます)

・ゲームオーバー・シーンの作成の仕方

・ゲームオーバーの設定の仕方

(1)新しくシーンを作成する

まずは、前回(タイトルシーン作成)の復習です。

・「File」をクリック

・「New Scene」を選択してクリック

スクリーンショット 2015-10-21 11.49.03

・もう一度「File」をクリック

・「Save Scene」を選択してクリック

スクリーンショット 2015-10-21 11.51.09

・名前を「GameOver」にして「Save」

スクリーンショット 2015-10-21 11.51.27

これで新しく「GameOver」シーンができました。

*「GameClear」シーンも全く同じ流れで作成してください。

スクリーンショット 2015-10-21 12.00.45

(2)ゲームオーバーシーンとゲームクリアーシーンを作成する

・「GameOver」シーンをダブルクリック

・「Create」をクリック→「UI」を選択→「Canvas」を選択してクリック

スクリーンショット 2015-10-21 12.41.40

次に、Canvasの上にパーツを置いていきます。

・「Canvas」を右クリック

・「UI」を選択

・「Image」を選択してクリック

スクリーンショット 2015-10-21 12.46.42

・作成した「Image」の名前を「GameOverLogo」に変更

スクリーンショット 2015-10-21 12.47.10

・「Import New Assets…」で「ゲームオーバー・ロゴ」に使用する画像をインポート

スクリーンショット 2015-10-21 12.53.18

・インポートした画像を選択

・「Inspector」で「Texture」をクリック

スクリーンショット 2015-10-21 12.54.10

・「Sprite(2D and UI)」をクリック

スクリーンショット 2015-10-21 12.54.15

・「Apply」をクリック

スクリーンショット 2015-10-21 12.54.29

・「Hierarchy」で「GameOverLogo」を選択

・「Assets」の中の「GameOverLogo」を「Source Image」にドラッグ&ドロップする

スクリーンショット 2015-10-21 13.11.06

・ロゴの位置と大きさは「Rect Transform」で調整する。

スクリーンショット 2015-10-21 13.11.40

・ここまでできたら「再生ボタン」を押して確認してみましょう。

スクリーンショット 2015-10-21 13.11.51

*同じ手順を繰り返して「GameClear」シーンも作成しましょう。

スクリーンショット 2015-10-21 13.23.10

*新しくシーンを作成したら必ず、「Build Settings」に追加します。

・「File」をクリック

・「Build Settings…」を選択してクリック

スクリーンショット 2015-10-21 16.47.22

・「GameOver」シーンと「GameClear」シーンをドラッグ&ドロップで追加する。

・追加したら「×」で閉じる。

スクリーンショット 2015-10-21 16.47.48

(3)ゲームオーバーのスクリプトを作成する

「Main」シーンをダブルクリックしてシーンを切り替えてください。

スクリーンショット 2015-10-21 16.34.35

まず、ゲームオーバーのルールを決めましょう。

今回は「ゲームフィールドの外に落ちたらゲームオーバー」にしてみます。

(ここがポイント!)

外に落ちた時ゲームオーバーにする方法

*「透明な床」を作成する。

*「それにぶつかったらゲームオーバー」になるようにする。

まずは、「透明な床」を作りましょう。

・「Create」をクリック

・「3D Object」を選択

・「 Plane」を選択してクリック

スクリーンショット 2015-10-21 14.36.52

・床の「大きさ」はゲームフィールドがすっぽり入るくらいに設定します。

スクリーンショット 2015-10-21 14.37.53

・床の「位置」はゲームフィールドの下にくるようにします。

スクリーンショット 2015-10-21 14.38.13

・床の名前は「GameOverFloor」に変更しましょう。

スクリーンショット 2015-10-21 14.49.28

・「GameOverFloor」を選択

・「Inspector」で「Mesh Renderer」のチェックを外しましょう。

スクリーンショット 2015-10-21 14.55.53

白色の床が「透明」になりました。

スクリーンショット 2015-10-21 14.56.51

(ここがポイント!)

「Mesh Renderer」のチェックを外すと、「透明だけどそこに存在するオブジェクト」を作成できます。これを応用すれば「隠し○○」を作れるようになります。

次に、ゲームオーバーのスクリプトを作成します。

・「C# Script」を作成し、名前を「GameOverFloor」に変更してください。

スクリーンショット 2015-10-21 15.31.36

「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」オブジェクトにドラッグ&ドロップしましょう。

スクリーンショット 2015-10-21 16.54.31

・ここまでできたら「再生ボタン」を押してみましょう。

ボールを動かして、ゲームフィールドの外に落ちてみてください。

「GameOver」のシーンに切り替わったら成功です。

スクリーンショット 2015-10-21 17.04.35

でもこのままだと何か味気ないですね。

なので、ゲームオーバーになったら「効果音」を鳴らしてみましょう。

「再生ボタン」を停止します。

*今度は「GameOver」シーンで作業しますのでシーンを切り替えます。

「GameOver」シーンをダブルクリック

スクリーンショット 2015-10-21 17.26.25

効果音は「Main Camera」に付けることにします。

・「Hierarchy」で「Main Camera」をクリック

・「Add Component」をクリック

・「Audio」を選択してクリック

スクリーンショット 2015-10-21 17.29.52

・「Audio Source」を選択してクリック

スクリーンショット 2015-10-21 17.30.00

*ゲームオーバーに使いたい効果音を「Import New Assets」でインポートする。

・インポートした効果音を「Audio Clip」にドラッグ&ドロップする。

スクリーンショット 2015-10-21 17.36.25

・「再生ボタン」を押してみましょう。

「GameOver」のロゴが表示されて、「効果音」が鳴れば成功です。

次は、一定時間が経過したら「タイトル画面(シーン)」に戻るように設定してみましょう。

(4)一定時間が経過したらタイトル画面に戻る設定

・「C# Script」を作成してください。

・名前を「GameOverController」に変更しましょう。

スクリーンショット 2015-10-21 17.43.22

ダブルクリックして下記のコードを記入しましょう。

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」シーンをダブルクリックしてください。

スクリーンショット 2015-10-21 17.58.37

・「再生ボタン」を押す。

・「Start」をクリック

スクリーンショット 2015-10-21 18.00.57

・ゲーム画面に切り替わったら、Ballを操作して外に落とす。

スクリーンショット 2015-10-21 18.01.06

・「GameOver」シーンに切り替わり、効果音が鳴る。

スクリーンショット 2015-10-21 18.01.13

・8秒後、タイトル画面に戻る。

スクリーンショット 2015-10-21 18.01.23

この流れができていたら成功です。

これでゲームオーバーの設定ができました。