[17]ゲームクリアーを作ろう

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

・ゲームクリアーの設定の仕方

(1)ゲームクリアー・シーンを作成する

(ポイント!)

まずは、前回作成した「GameClear」シーンをダブルクリックして、シーンを切り替えてください。

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

この画面にクリアーした時の「効果音」をつけてみましょう。

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

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

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

・「Add Component」をクリック

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

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

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

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

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

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

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

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

(2)ゲームクリアーのコードを作成する

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

まず、ゲームクリアーのルールを決めましょう。

今回は「コインを全てゲットしたらクリアー」にしてみます。

・下記のコードを「Ball」スクリプトに追加してください。

using UnityEngine;
using System.Collections;

// ①★この一行を追加する
using UnityEngine.SceneManagement;

public class Ball : MonoBehaviour {

	public float move_speed;
	private Rigidbody rb;
	public AudioClip coinGet;
	public float jump_speed;
	private bool isJumping = false;

	// ②★変数を定義する
	private int count;


	// Use this for initialization
	void Start () {

		rb = GetComponent<Rigidbody>();

		// ③★変数の中にデータを入れる
		count = 0;
	
	}
	
	// Update is called once per frame
	void Update () {

		float moveHorizontal = Input.GetAxis("Horizontal");
		float moveVertical = Input.GetAxis("Vertical");

		Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
		rb.AddForce(movement * move_speed);

		if(Input.GetButtonDown("Jump") && isJumping == false){
			rb.velocity = Vector3.up * jump_speed;
			isJumping = true;
		}
	}
		
	void OnCollisionEnter(Collision col){
		if(col.gameObject.CompareTag("Floor")){
			isJumping = false;
		}
	}


	void OnTriggerEnter(Collider other){

		if(other.CompareTag("Coin")){
			Destroy(other.gameObject);

			AudioSource.PlayClipAtPoint(coinGet, transform.position);

			// ④★このコードを追加する
			count = count + 1;

			if(count == 2){
				Invoke("ReturnToFile", 0.5f);
			}
			// ここまで

		}
	}
		
	// ⑤★このメソッド(命令ブロック)を記載する
	void ReturnToFile(){
		SceneManager.LoadScene("GameClear");
	}
}

・「再生ボタン」を押してコインをゲットしてみましょう。

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

なお、今回はコインを「2枚」ゲットするとゲームクリアーになります。

*コイン「5枚」ゲットでゲームクリアーに変更するためには、コードのどこを変えればよいでしょうか?

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

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

*ここからは「GameClear」シーンで作業しますのでシーンを切り替えます。

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

スクリーンショット 2015-10-22 0.07.23

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

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

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

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

using UnityEngine;
using System.Collections;

// ①★この一行を追加
using UnityEngine.SceneManagement;

public class GameClearController : MonoBehaviour {

	// Update is called once per frame
	void Update () {

		// ②★この一行を追加
		Invoke("ReturnToFile", 4.0f);
	}

	// (復習)
	// ③★下記に②で呼び出すメソッドを書いてみよう。
	// テキスト[16]のゲームオーバーを参考にする。




}

・作成したスクリプトは「Main Camera」にドラッグ&ドロップします。

スクリーンショット 2015-10-22 0.11.30

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

4秒後にタイトル画面に切り替わったら成功です。

最後にゲームの流れができているかを確認してみましょう。

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

スクリーンショット 2015-10-22 0.16.39

・再生ボタンを押して下記の流れを確認してみましょう。

「Title」シーン

*外に落ちたら・・>「GameOver」シーン・・>8秒後に「Title」シーン

*コインを2枚ゲットしたら・・>「GameClear」シーン・・>4秒後に「Title」シーン

これで、BallGameは一応完成です。

この次は、自分でゲームオーバーやゲームクリアーの「条件(ルール)」を増やしてみましょう。