(今回はこんなことを学びます)
・ゲームクリアーの設定の仕方
(1)ゲームクリアー・シーンを作成する
(ポイント!)
まずは、前回作成した「GameClear」シーンをダブルクリックして、シーンを切り替えてください。
この画面にクリアーした時の「効果音」をつけてみましょう。
*ゲームクリアーに使いたい効果音を「Import New Assets」でインポートする。
効果音は「Main Camera」に付けることにします。
・「Hierarchy」で「Main Camera」をクリック
・「Add Component」をクリック
・「Audio」を選択してクリック
・「Audio Source」を選択してクリック
・インポートした効果音を「Audio Clip」にドラッグ&ドロップする。
・「再生ボタン」を押してみましょう。
「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」シーンをダブルクリック
・「C# Script」を作成してください。
・名前を「GameClearController」に変更しましょう。
・下記のコードを記入しましょう。
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」にドラッグ&ドロップします。
・「再生ボタン」を押してみましょう。
4秒後にタイトル画面に切り替わったら成功です。
最後にゲームの流れができているかを確認してみましょう。
・「Title」シーンをダブルクリックしてシーンを切り替えてください。
・再生ボタンを押して下記の流れを確認してみましょう。
「Title」シーン
*外に落ちたら・・>「GameOver」シーン・・>8秒後に「Title」シーン
*コインを2枚ゲットしたら・・>「GameClear」シーン・・>4秒後に「Title」シーン
これで、BallGameは一応完成です。
この次は、自分でゲームオーバーやゲームクリアーの「条件(ルール)」を増やしてみましょう。