ゴールに触れたとき、別シーンへ移動するしくみをつくってみましょう。
シーン移動後も、オブジェクトが消されず、そのまま残るようにします。
関連記事:
【Unity C#】移動先のシーンで座標を指定する
【Unity C#】別シーンへ遷移するボタンを設置する
シーンを追加
まずはシーンを2つ作成します。
Scene1を開き、ファイル > ビルド設定 > シーンを追加。
同じようにScene2も、シーンを追加します。
シーン1のオブジェクトを用意
Scene1を開き、オブジェクトを用意していきます。
CubeオブジェクトをGoal、SphereオブジェクトをPlayerと名前変更しました。
床としてPlaneオブジェクトも作成します。
それぞれのオブジェクトには、わかりやすい色をつけています。
Goalに、Goalという名前でタグをつけましょう。
Playerにはリジッドボディを追加しています。
ここまでできれば、シーンをいったん保存します。
シーン2のオブジェクトを用意
続いて、Scene2を開きます。
ここにはPlaneオブジェクトだけを作りました。
判別しやすいように、シーン1とは違う色をつけます。
以上ができれば、シーンを保存しましょう。
シーン遷移のスクリプト
再び、Scene1を開きましょう。
Playerに、PlayerMove.csを作成して追加します。
シーン移動のスクリプトを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; //シーン遷移させる場合に必要 public class PlayerMove : MonoBehaviour { public float speed; void Start() { DontDestroyOnLoad(gameObject); //シーンを切り替えても削除しない speed = 5; } void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float dz = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.position = new Vector3 ( transform.position.x + dx, 0.5f, transform.position.z + dz ); } void OnTriggerEnter(Collider other) { if(other.gameObject.tag == "Goal") { SceneManager.LoadScene("Scene2"); } } } |
using UnityEngine.SceneManagement; はシーン遷移するときに書いておく必要があります。
DontDestroyOnLoad(gameObject); を入れて、シーン移動後も、オブジェクトが残るようにしています。
プレイしてみましょう。
Scene1へ戻るボタンを、【Unity C#】別シーンへ遷移するボタンでご紹介しています。
関連記事:
【Unity C#】移動先のシーンで座標を指定する
【Unity C#】別シーンへ遷移するボタンを設置する