[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」をダブルクリック

・下記のコードを記入しましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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

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

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