上図のようなゲームフィールドを作成したとき、当然、落下したらゲームオーバー、もしくは、リトライの判定処理をしたい。
分かりにくいかもしれないが、奥に見える緑色の線が、一応、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 は、現在、単に、現在アクティブなシーン名を取得する関数である。
コメント