UE4ゲーム制作入門十一日目
一人UE4ゲーム制作入門アドベントカレンダー十一日目です。
更に、土曜日は関西UE4GameJamの1日目でした。
今回は遷移を作ってみました。なお、本人わけわかんなくなってすごい無駄なことやってる気がするので、どうしようかなって思ってます。
パーシスタントレベルを用意して、その下にタイトルや実際のステージ、リザルトを配置します。
パーシスタントレベルは一番初めに読み込まれる際にタイトルを自動でロードするようにしてます。
タイトルレベルは、開始時にBP_PlayerのメッシュのVisibleを消したりするために実装したInvalidPlayer関数を実行した後、タイトルウィジェットを作成して、UI以外に入力がとられないようにしました。
InvalidPlayerは、プレイヤーのMeshを見えなくして、もしRifleが生成されていたら破棄する処理になっています。
タイトルウィジェットであるWG_Titleはゲームタイトルと開始判定用のボタンです。背景画像とか時間があったらWindowsPaintの本気を見せようと思いましたが、無理でした・・・。あと。アニメーションも後でつけます。今は余裕がありませんw
開始ボタンが押された時の処理は、今まで作ってきていたMainレベルをストリーミングロードし、このウィジェットを画面から外して、Titleレベルを消して、入力をゲームのみにしています。
次にメインレベルのレベルブループリントです。まず、PlayerStartの位置にすでに生成されているBP_Playerを移動させます。
そのあと、消えているMeshやRifleを見えるようにするInitGame関数を走らせています。
InitGame関数の中身ですが、先ほどのInvalidPlayerの逆のようなことをやっています。
リザルト画面に遷移するのは、現段階ではプレイヤーが死んだときくらいなので、プレイヤーの死亡処理の後ろにリザルト画面をストリーミングロードしています。
ロードされたリザルト画面はリザルトウィジェットであるWG_Resultを適用します。その前に、何かしらのウィジェットが適用されていた場合を考えて、すべてのウィジェットを外しています。
WG_Resultは単純にGameEndという文字を表示しているだけです。
WG_Resultは特に操作は今のところしないので、表示されて一定時間たったらパーシスタントレベルをOpenLevelしてリセットしています。
遷移の際にいろいろなところから起きているので、遷移イベントを適当なマネージャアクターを作ってそこで管理すべきかなぁと思いました。