ボス前カットシーンを作る(1/2)ロジック編
大きな扉の前に近づくと「入る」と表示され、任意のボタンを押すと暗転してムービーが始まる。
そんなよくある演出、ボス前カットシーンを作ります。
※ムービーの撮り方・カット割りについては別記事で解説しました。
本記事ではロジックの解説になります。長くなったのでロジック編とシーケンサー編の全2回に分けました。
仕様
- ボス前の扉で任意のボタンを押す
- 画面が暗転(フェードアウト)
- ムービー開始・終了(フェードアウト)
- 戦闘開始
マップ作成
まず、先に3つのマップを作っておきます。
現在いるマップを「Map01」
ムービー中のマップを「Boss_Cutscene」
ボス戦のマップを「Boss_Play」
※マップ、パーシスタントレベル、サブレベルについてはこちら参考に
UE4 パーシスタントレベルとサブレベル 凛(kagring)のUE4とUnityとQt勉強中のゲーム制作ブログ
複数のレベルを管理する | Unreal Engine ドキュメント
Map01
ボスの部屋に続く大きな扉を用意します。※別に扉じゃなくても何でもいいです。
この扉の前で任意のボタンを押して中に入れるようにしましょう。
「トリガー内にプレイヤーがいる間、入力を受け付ける」アクタを作成します。
新しいアクタ、BP_LevelChangerを作成します。
ボックスコリジョンとマテリアルビルボードを追加
マテリアルビルボードはウィジェットでもいいです。
簡易的に説明するためマテリアルビルボードにしました。
デフォルトだとゲーム開始時から文字が表示されてしまうので、マテリアルビルボードのVisibilityはオフにしておきましょう。
プレイヤーがコリジョンに重なった時の処理を作っていきます。
ボックスコリジョンにオーバーラップしたアクタにPlayerタグがついていれば、文字を表示する。
続けてEnableInputノードを置いて、このアクタがプレイヤーからの入力を受け付けるようにします。
プレイヤーのアクタにはPlayerタグをつけておきましょう。
次にプレイヤーが重なっているときだけ実行することが出来る処理を作ります。
今回、中に入るボタンはFキーを割り当てたので、Fインプットイベントに処理を作りました。
処理の解説としては、
- マテリアルビルボードが表示されているかチェック
- 入ることが確定されたら、PlayerPawnとBP_LevelChangerの入力を無効化
- PlayerCameraManagerをつかったフェードアウトを実行
- フェードアウトと同じ時間をDelayに入れて真っ暗になったらレベル読み込み
ここまで作ったら、シーンにBP_LevelChangerを置きましょう。
詳細パネルで、Boxコリジョンを選択し、シェイプを好きな大きさに調整します。
これでMap01は終わり。
ちなみに、実行してみると、オーバーラップで「中に入る」が表示され、その状態でFを押せば
フェードが開始されます。画面が完全に黒くなった瞬間次のマップに遷移します。
続きはシーケンサー編へ