前回までにステージに関する部分の作り方を説明してきました。ここまで来たらあとは作ったステージをゲームの流れの中に組み込めば良いので完成が見えてきましたね。あともう少しの辛抱です。
さて、それでステージは最初から順番にクリアしていく形でも良いのですが、今回はプレイヤーが自由にステージを選べるようにしてみようと思います。そこでここではステージセレクト用のシーンを作ってみましょう。
※今回はユニティちゃんがポータルに触れたら対応するステージに移動する、というタイプのステージ選択用シーンを作ります。ステージセレクト画面(=UI)からステージを選べるようにしたい方は、別のチュートリアルのページ「タイトル画面とステージセレクト画面の作り方」をご覧ください(今回のやり方よりも少し難しいです)。
シーン移動用のポータルの作成
では、まずは任意のステージに移動するための「ポータル」(下図)を作ります。
ポータルのゲームオブジェクトの作成
ポータルはゴールに似ているので、ゴールのゲームオブジェクトを少し改造して作ります。
新しいシーンを作り、ゴールのプレハブをヒエラルキーにドラッグ&ドロップしたらそれを右クリックして「プレハブを解凍」します。こうするとプレハブ関係が解除されるので、次の手順でポータルを作ってみてください。
- 名前を「Portal」に変更します。
- 「Goal」スクリプトコンポーネントを削除します。
- 新しいマテリアルを作り、「Goal」の部分のマテリアルを作ったときと同じ要領で「Stage1」等のテクスチャ(※自作してください)を設定したマテリアルを作ります。
- 子のQuadのマテリアルを手順3で作ったマテリアルに差し替えます。
できたらこれを適当なフォルダにドラッグ&ドロップしてプレハブ化しておきましょう。
ポータルのC#スクリプト
次にポータルのC#スクリプトを書きます。新しいC#スクリプトファイルを作り、名前を「Portal」にしたら次のコードを書いてください。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Portal : MonoBehaviour { [SerializeField] int sceneIndex = 0; MoveSceneManager moveSceneManager; void Start() { moveSceneManager = GameObject.FindGameObjectWithTag("GameController").GetComponent<MoveSceneManager>(); } void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Player")) { moveSceneManager.MoveToScene(sceneIndex); // 念のため、ポータルに触れた時にユニティちゃんを停止させておく KurokumaCharacterController player = other.GetComponent<KurokumaCharacterController>(); player.StopCharacter(); } } }
書けたらこれをポータルのプレハブにアタッチしておいてください。
ポータルをシーンに配置してステージセレクト用シーンを作る
次に図のようにポータルをシーンに配置してステージセレクト用シーンを作りましょう。
※GameManager、カメラ、ユニティちゃんも忘れずに配置してください。
ポータルの「Scene Index」はタイトルが「0」、ステージ1が「2」、ステージ2が「3」…という風に設定してください(※インデックス1番はステージセレクト用シーン自身のインデックスです)。
シーンをビルド設定に登録する
そうしたら、これまでに作ったシーンをビルド設定に登録します。メニューバーの「ファイル」→「ビルド設定」からBuild Settingsウィンドウを開き、「ビルドに含まれるシーン」の欄にゲームに入れたいステージのシーンファイルをすべて登録しましょう。
あと次のページで作るタイトル画面用のシーンもついでに登録しておきたいので、とりあえず「くろくま基本アセット2」に含まれている「Title」シーン(KurokumaBasicAssets2/Scenesフォルダ内)をリストの先頭(0番)に登録しておいてください(※先頭のシーンがゲーム起動時に読み込まれます)。
つまり登録するシーンの順番は
- 0番:タイトル
- 1番:ステージセレクト
- 2番以降:各ステージ
という感じにしてください。
テストプレイして動作を確認する
ここまでできたらテストプレイして動作を確認してみましょう。ユニティちゃんがポータルに触れたら対応するシーンに移動するでしょうか。きちんと動けば成功です。
次のページ→タイトル画面の作り方