(今回はこんなことを学びます)
・ゲームクリアーの設定の仕方
(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は一応完成です。
この次は、自分でゲームオーバーやゲームクリアーの「条件(ルール)」を増やしてみましょう。







