ゲーム開発ツールのUnityを少しづつ勉強中。Unityのアドベンチャーゲーム制作アセットAdventure Creatorの公式サイトに掲載されている英語のチュートリアルを翻訳しながら進行中。今回はシーンの切り替え方法について勉強します。
シーンの切り替え:切り替えエフェクトとプレイヤースタート位置の設定
ゲームを管理しやすくするために、できるだけ多くの場面にゲームの場所を分割することをお勧めします。アドベンチャーゲームでは、別々のシーンファイルで各部屋や場所を分けるのが一般的です。
シーンを切り替える際には、いくつかのオプションが用意されています。このチュートリアルではそれらを含みます。
基本
シーンを切り替えるには、Adventure Creatorは適切なPlayerStartオブジェクトにPlayerを配置します。PlayerStartsは、[AC Game Editor]ウィンドウ > [Scene]タブ:Scene manager > Scene prefabs > Navigationパネルから作成することができます。
[AC Game Editor]ウィンドウ > [Scene]タブ:Scene manager > Default PlayerStart: フィールドに気付くかもしれません。シーンには好きなだけ多くのPlayerStartプレハブを置くことができますが、Adventure CreatorがPlayerの前のシーンと一致するものを見つけることができない場合は、代わりにデフォルトのシーンが使用されます。
シーンを切り替えるには、Scene:Switch ActionをCutsceneやその他のActionListの一部として呼び出します。
トランジションエフェクトの追加
デフォルトでは、次のシーンがロードされている間、画面は短時間黒くなります。しかし、より洗練された感じのために、より良いトランジションエフェクトを追加することは可能です。
たとえば、Camera:Fade Actionを使用してシーンが変更される直前にフェードアウトすると、後でフェードインして、黒にフェードインしてから元に戻すことができます。
または、トランジションを完全に削除し、あるシーンから次のシーンにまっすぐにカットすることもできます。これは、[Scene: Switch]アクションでOverlay current screen during switch?をチェックすることで可能です。これにより、Adventure Creatorは最初のシーンのスクリーンショットを撮り、切り替え中にオーバーレイします。
クロスフェード効果のために、このオプションを新しいシーンのCamera: Fadeアクションと組み合わせることができます。最初のシーンをオーバーレイし、2番目のシーンの開始時にフェードインすると、カメラはクロスフェードします。
スクリーンの読み込み
また、あるシーンから別のシーンに切り替えるときに”interim”シーンとして使用するために、プロジェクトの特定のシーンを専用にすることもできます。この”interim”シーンの中にグラフィックスを配置して、ゲームがロードされていることをユーザに伝えることができるので、シーンが大きく、ロードに時間がかかる場合に便利です。
読み込みシーンを作成したら(この場合はLoadingSceneという名前)、UnityのBuild settings(メニュー:File > Build Settings)に追加してから、[AC Game Editor]ウィンドウ > [Scene]タブ:Settings manager > Scene loading > Use Loading screen?にチェックを入れます。使用するシーンの詳細を入力することができます。
また、プログレスバーを使用して、読み込みにどれくらいの時間がかかるかをユーザーに知らせることもできます。このトピックの詳細については、このチュートリアルを参照してください。
プレイヤーを相対的に配置する
Adventure Creator v1.49の新機能は、前のシーンのマーカーを基準にしてプレーヤーを配置する機能です。これは、プレイヤーが次のシーンをトリガするために踏み込むことができる非常に広い領域がある場合に便利です。
例として、次のシーンを考えてみましょう。
プレイヤーが赤いトリガーを踏むと、次のシーンに移動します。トリガーは非常に広いので、シーンが変更された後、プレイヤーは画面の同じ側にいなければなりません。たとえば、トリガーの左側にステップを進めると、プレーヤーは次のシーンの左側に表示されます。
これを行うには、プレーヤーが次の画面で相対的に配置されるマーカーを作成します。まず、[AC Game Editor]ウィンドウ > [Scene]タブ:Scene manager > Scene prefabs > Navigation > [Marker]ボタンをクリックして新しいマーカーを作成し、それをトリガーの中央に配置します。
次に、[Scene: Switch]アクションで、Position Player relative to Marker?にチェックを入れます。そしてRelative Marker: フィールドに作成したMarkerを割り当てます。
プレーヤーは引き続き次のシーンのPlayerStartを”base”位置として使用しますが、プレイヤーとこのマーカーの相対的な位置も考慮されます。把握するのはちょっと難しいコンセプトなので、実際に試してみて、結果を自分で確認してください!
ということでシーンを切り替えた際にプレイヤーの位置をちゃんと考慮する機能があるということでかなり便利なのではないでしょうか。次回は実際に3Dシーンで試してみたいと思います。