はじめに
今回はCorgi Engineの画面遷移・ステージ選択について確認してみました。
ここが分かればタイトル → マップ選択 → ゲーム画面 → マップ選択 ... と言ったサイクルも作ることができます。
CorgiEngineでの遷移で大事なのはLevelSelectorです。
ゴールで遷移先を設定する場合はFinishLevelでした。
スクリプトを扱う場合はLevelManagerが肝になります。
使用アセット
Corgi Engine - 2D + 2.5D Platformer
確認環境
Unity 2019.4.16f1
ステージ選択
LevelSelectionの確認
LevelSelectionの遷移がどのように行われているか確認しました。
UICamera/Canvas/Mask/MMCarousel/Content/Retro1/ButtonAlt に付いている
LevelSelector コンポーネントで遷移先を指定しています。
LevelName ... 遷移先のシーン名
※遷移先のシーンはBuildSettingsで登録されている必要があります。
シーン登録のやり方に登録方法をまとめています。
LevelSelector.GoToLevel はボタンの反応に合わせて呼び出されています。
ButtonAlt/Container/Background に付いている MMTouchButton にて設定が行われています。
ButtonPressedFirstTime ... ボタンが押されたときの呼び出し
自作ボタンでやってみた
Unityのボタンを配置しLevelSelector.GoToLevelを呼び出してみました。
UICamera/Canvas/ButtonRight/Mask に UI/Button を追加します。
ボタンの位置・サイズを調整しします。
①Buttonを選択
②OnClickの+を押します
③ButtonAltをドラッグアンドドロップで追加します
④▼からLevelSelector.GoToLevelを選択します
設定はこれで完了となります。
実行して確認してみてください。
LevelSelectionMap の確認
LevelSelectionMapのシーン選択方法を確認してみました。
ここで主要なスクリプトは3つとなります。
LevelMapCharacter ... 入力を受けてキャラクターの移動、決定の入力受付
LevelMapPathElement ... マップの接続先定義
LevelSelector ... 遷移先のシーン、シーン切り替え
LevelMapCharacter
PlayerID ... プレイヤーの操作定義どれを使うか変更する理由はありませんが。
2プレイヤー同時選択等の場合の2P側はPlayer2となります。
CharacterSpeed ... マップ上でのキャラクター移動スピード
StartPoint ... 開始時の位置
CharacterIsFacingRight ... 初期向きの扱いが右か
CharacterSpeed = 10 の設定
LevelMapPathElement
マップの各ポイントです。
ポイントは停止ポイントと自動移動ポイントの2タイプあります。
AutomaticMovement ... true 自動移動ポイント、 false 停止ポイント
PossibleDirections ... 接続先の場所
停止ポイント
AutomaticMovement が false
自動移動ポイント
AutomaticMovement が true
新しい地点を繋げてみた
PE1とPE2を接続してみました。
地点は斜めでも問題なく動くみたいです。
PE1を選択し、DownへPE21をドラッグアンドドロップで設定
PE21を選択し、UpへPE1をドラッグアンドドロップで設定
設定は以上となります。
LevelSelector
LevelName ... 遷移先のシーン名
※遷移先のシーンはBuildSettingsで登録されている必要があります。
シーン登録のやり方に登録方法をまとめています。
LevelMapPathElement/AutomaticMovementがfalseの地点にLevelSelectorを追加し遷移先のシーン名を記載します。
ステージクリア遷移
Assets/CorgiEngine/Demos/Corgi3D/NewCorgi3D のシーンで確認を行っています。
FinishLevelというスクリプトで遷移が行われていました。
FinishLevel
LevelName ... 遷移先のシーン名
※遷移先のシーンはBuildSettingsで登録されている必要があります。
シーン登録のやり方に登録方法をまとめています。
遷移先をLevelSelectionMapに変更してみた
マップ選択画面に戻ることができました。
FinishLevelのLevelNameをLevelSelectionMapに設定
ゲームオーバー遷移
デモではプレイヤーの体力が0になった場合、リスタートされます。
これをタイトルやロード画面など別のシーンに行いたい場合、どうしたら良いかを確認しました。
GameManagerにゲームオーバー時に遷移するシーンの設定がありました。
MaximumLives ... 最大残機数。ゲームオーバー遷移を行う場合必ず1以上を設定
CurrentLives ... 現在の残り残機数
GameOverScene ... ゲームーバー時の遷移先シーン名
設定を行うと死亡し、残機が無くなると画面遷移します。
体力が0になった瞬間に遷移が走っているのは気になりますね。。。
LevelManager
おまけ:スクリプト扱います
Assets/CorgiEngine/Demos/Corgi3D/NewCorgi3D のシーンで確認を行っています。
LevelManagerとは何かですが、これがCorgiEngineでゲームの進行を管理しています。
LevelManagerのスクリプトにGotoLevelと言うメソッドがあります。
LevelSelector、CharacterSelector、FinishLevelも全てLevelManagerのGotoLevel()を呼び出しています。
スクリプトから直接画面遷移を呼び出す場合は、下記を書けば画面が切り替わります。
LevelManager.Instance.GotoLevel( 遷移先のシーン名 );
※遷移先のシーンはBuildSettingsで登録されている必要があります。
シーン登録のやり方に登録方法をまとめています。
シーン登録のやり方
登録対象シーンを開いた状態でUnityメニュー → File → Build Settings... を選択します。
AddOpenScenes を押すと、開いているシーンが登録されます。
CorgiEngineの場合、シーンを名前で指定するため登録順番はあまり関係ありません。
一番上のシーンが起動シーンとなるのでそこだけ要注意です。
おわりに
CorgiEngineでのシーン切り替えに大事なのはLevelSelectorだと感じました。さっそく自作ゲームに組み込んで各遷移を組み立てたいと思います。
少しでもお役に立つことがあれば幸いです。
ここまで確認頂きありがとう御座いました。
関連記事