Unity5 ~落下判定スクリプト~

 

上図のようなゲームフィールドを作成したとき、当然、落下したらゲームオーバー、もしくは、リトライの判定処理をしたい。

 

分かりにくいかもしれないが、奥に見える緑色の線が、一応、cubeオブジェクトで作ったOutAreaとした。

inspectorビューで、Box Collider の Is Trigger にチェックを入れる。

当たり判定の範囲を定義する。

 

次に、OutArea オブジェクトに触れたときの処理をスクリプトで書いていく。

 

 

using UnityEngine;
using UnityEngine.SceneManagement;

public class Out : MonoBehaviour {

    void OnTriggerEnter(Collider col)
    {
        if (col.gameObject.tag == "Player")
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().name);
        }
    }
    // Use this for initialization
    void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

 

あえて、不要な部分もデフォルトのまま載せてあるが、特に2行目の using UnityEngine.SceneManagement; は重要で、記述しないと、SceneManager が使用できない。

void OnTriggerEnter(Collider col){ }は、Trigger が True になった時の処理を書いている。

更に、if (col.gameObject.tag == “Player”) { } で、OutArea に入ったオブジェクトが、プレイヤーキャラであることも判定している。

ちなみに、プレイヤーキャラのオブジェクトの Inspectorビューにおいて、Tag を Player にしておく必要がある。

 

 

そして、SceneManager.LoadScene(SceneManager.GetActiveScene().name); で、現在のシーンを呼び出している。

SceneManager.LoadScene(); が、シーンを呼び出す関数なので、( )の中には、呼び出したいシーン名を記述すればいい。

 

例えば、SceneManager.LoadScene(“Main”); とすれば、Main という名前で Save した、シーンが、読み込まれる。

 

SceneManager.GetActiveScene().name は、現在、単に、現在アクティブなシーン名を取得する関数である。

 

コメント

タイトルとURLをコピーしました