UnrealEngine4でゲーム制作・ゲームの流れをつくる
今回やること
UnrealEngineではレベルという単位で場面の管理を行います。今回はオープニング画面、ゲーム画面、エンディング画面というくくりでレベルを用意し、ゲームの流れを組んでみたいと思います。
3つのレベルを用意する
ゲームをプレイさせるレベルは、前回までの流れの中で3人称視点の3Dアクション的なステージを用意しています。オープニングとエンディング用に、このステージを活かし、新たに固定カメラを用意しようと思います。
新規カメラの配置
オープニング用のレベルに、基本オブジェクトからカメラをシーンに配置します。この状態で新規のレベルとして保存します。
一方レベルブループリントで、Begin Play、Get Player Controller、先程配置したCamera ActorをSet View Target with Blendに結線します。
ワールド設定でGameMode Overrideを既に存在しているMy Gameに変更します。これでPlayした際の画面が固定カメラから見た画になるはずです。
次のレベルのロード
今回はゲームパッドのボタンを押したら、ゲームのメインレベル(start1)を読み込むようにしてみます。
レベルブループリントで、ここではゲームパッドのYボタンから指を離した(Released)時に、Open Levelで次に開くレベル名(start1)を指定する、というのが基本形です。
レベルロード時にフェードさせる
レベルの移り変わりは出来ましたが、バスっと切り替わってしまうのは味気ないので、前のレベルがフェードアウトし、次のレベルがフェードインしてくるようにしたいと思います。
Matineeでフェードイン/アウトのアニメを定義する
新規マチネを作成します。
トラック上で右クリックし、新規ディレクターグループを追加します。
追加されたDriGroup上で右クリックし、新規Fade Trackを追加します。
キーフレームの値ですが、Fade Inの場合は、0secで1、0.5secで1、1.0secで0とします。Fade Outの場合は、0secで0、1secで1とします。
先のオープニングで、ゲームパッドのYボタン押し下げ後にフェードアウトした後、次のレベル(start1)を開く場合は、次のようなブループリントにしました。
Yボタン押されたら、BGMが鳴っているのでそれをまずFade Outを使って1secで音をフェードアウトさせます。その次に、先に作ったfadeoutのMatineeをPlayに結線することで画面が黒にフェードアウトします。これらをOpen Levelの前に実行したいので、Open Levelの前にDelayを使って1sec時間を空けます。
start1のレベルが呼ばれた時にフェードインさせたいと思います。
start1のレベルブループリント上で、Begin PlayをトリガーにfadeinのMatineeをPlayさせるように、ブループリントを組みました。
Open Levelを使えば、ボタンを押したり、何かと衝突したり、様々なトリガーと合わせて場面転換が可能となります。Matineeを使ったフェードイン/アウトの演出との組み合わせ技も効果的でしょう。
出来上がったサンプルゲームはこんな感じです。