UE4ゲーム制作入門十一日目

一人UE4ゲーム制作入門アドベントカレンダー十一日目です。

更に、土曜日は関西UE4GameJamの1日目でした。

今回は遷移を作ってみました。なお、本人わけわかんなくなってすごい無駄なことやってる気がするので、どうしようかなって思ってます。

パーシスタントレベルを用意して、その下にタイトルや実際のステージ、リザルトを配置します。

レベル配置

パーシスタントレベルは一番初めに読み込まれる際にタイトルを自動でロードするようにしてます。

パーシスタントレベルブループリント

タイトルレベルは、開始時にBP_PlayerのメッシュのVisibleを消したりするために実装したInvalidPlayer関数を実行した後、タイトルウィジェットを作成して、UI以外に入力がとられないようにしました。

タイトルレベルブループリント

InvalidPlayerは、プレイヤーのMeshを見えなくして、もしRifleが生成されていたら破棄する処理になっています。

PlayerのInvalidPlayer関数

タイトルウィジェットであるWG_Titleはゲームタイトルと開始判定用のボタンです。背景画像とか時間があったらWindowsPaintの本気を見せようと思いましたが、無理でした・・・。あと。アニメーションも後でつけます。今は余裕がありませんw

WG_Title.png

開始ボタンが押された時の処理は、今まで作ってきていたMainレベルをストリーミングロードし、このウィジェットを画面から外して、Titleレベルを消して、入力をゲームのみにしています。

WG_Titleのボタン押したときの処理

次にメインレベルのレベルブループリントです。まず、PlayerStartの位置にすでに生成されているBP_Playerを移動させます。

そのあと、消えているMeshやRifleを見えるようにするInitGame関数を走らせています。

MainLevelブループリント

InitGame関数の中身ですが、先ほどのInvalidPlayerの逆のようなことをやっています。

BP_PlayerのInitGame関数

リザルト画面に遷移するのは、現段階ではプレイヤーが死んだときくらいなので、プレイヤーの死亡処理の後ろにリザルト画面をストリーミングロードしています。

Playerダメージ処理

ロードされたリザルト画面はリザルトウィジェットであるWG_Resultを適用します。その前に、何かしらのウィジェットが適用されていた場合を考えて、すべてのウィジェットを外しています。

Resultレベルブループリント

WG_Resultは単純にGameEndという文字を表示しているだけです。

WG_Result.png

WG_Resultは特に操作は今のところしないので、表示されて一定時間たったらパーシスタントレベルをOpenLevelしてリセットしています。

WG_Resultのイベントグラフ

遷移の際にいろいろなところから起きているので、遷移イベントを適当なマネージャアクターを作ってそこで管理すべきかなぁと思いました。