UnrealEngine奮闘記

アンリアルエンジンでの開発やTIPSをまとめたblogです

インベーダーゲームを作る その10タイトルメニューとゲームオーバー

f:id:swiftnest:20140524111734j:plainインベーダーゲームもいよいよ最終回となりました。
今回はタイトルメニューとゲームオーバーを作りたいと思います。

  • 新しいレベルを作る
  • メニューを作る
  • レベルの移動とNowLoading
  • ゲームオーバーとタイトル遷移

新しいレベルを作る

まずタイトルだけの新しいレベルを作成します。
レベルは左上の「File -> NewLevel」から作成します。

f:id:swiftnest:20140520224009j:plain

EmptyLevelを選び、ファイル名は「Title.umap」として作成します。

次に今後Titleからゲームを始めたいので、Project SettingsのDefault Mapsを両方共Titleに変更します。
これでタイトルメニューからゲームがスタートするようになります。

f:id:swiftnest:20140520224739j:plain:w460

メニューを作る

次はTitle.umapに変更を加えていきます。
まずは、いつも通りGameModeクラスとHUDクラスを作成します。

作成方法は第7回を参考にして下さい
それぞれTitleGameModeとTitleHUDとします

次にタイトル画像を用意します。
今回はこちらを用意しました。

f:id:swiftnest:20140520225252j:plain:w460

※ダウンロードはこちらから
https://www.dropbox.com/s/217moxow1cusgu8/title.jpg

TitleHUDを開き、BluePrintを作成します。
基本的には第8回と同じくEventReceiveDrawHUDからスタートし、DrawTextureでテクスチャを描画しますが、違う所はAddHitBoxがあることです。

これは設定した矩形領域をクリックするとイベントが返ります。
作成したBluePrintはこちらです。

f:id:swiftnest:20140619222953j:plain:w460

※Math Expressionの使用は止めました。
詳細はBlog一番下の注釈をご確認下さい。

イベント呼ばれるかどうか確かめてみます。

AddHitBoxの領域をクリックするとEventReceiveHitBoxClickが呼ばれます。
呼ばれる際にAddHitBoxに指定したNameが返って来ますので、それをSwitchで分岐します。

f:id:swiftnest:20140520230605j:plain:w460

これでBlueprintは問題ありませんが、さらにマウスカーソルとマウスイベントを有効にする必要があります。
HUD等と同じくPlayerControllerクラスを作成し、「TitlePC」とします。

TitlePCBPを開きDefaultsを開きます。
ここにMouseInterfaceがありますので、全てチェックを入れます。
これでマウスイベントが機能するようになります。

f:id:swiftnest:20140520231702j:plain:w460

Startをマウスでクリックし、画面に「Start」と表示されれば成功です。

レベルの移動とNowLoading

先ほどのEventReceiveHitBoxClickの続き、OpenLevelを作成します。
これだけでレベル移動が出来ますが、レベルの移動は時間がかかりますので
LoadStreamLevelを間に挟み、NowLoadingを作っていきます。

f:id:swiftnest:20140520233411j:plain:w460

画像はこちらを用意しました。

f:id:swiftnest:20140520233429p:plain:w460

※ダウンロードはこちらから
https://www.dropbox.com/s/7ogbortxguu034n/nowloading.png

変数「IsLoading」を用意します。変数の型はboolです。
Switchの先に接続し、チェックボックスにON(true)を設定します

f:id:swiftnest:20140524111734j:plain:w460

次にEventReceiveDrawHUDに戻り、DrawTextureの後にIsLoadingを見てNowLoadingを表示するように分岐します。

f:id:swiftnest:20140520234104j:plain

これでNowLoadingが完成です。
点滅をさせたい場合はTimelineを使用すると比較的簡単に出来ますが、今回は割愛します。
是非試してみてください

Unreal Engine | Creating Timelines
Unreal Engine | Editing Timelines

ゲームオーバーとタイトル遷移

いよいよ大詰めです。
ゲームオーバーとタイトル遷移を作ります

ゲームオーバー画像はこちらを用意しました。

f:id:swiftnest:20140520234539p:plain:w460

※ダウンロードはこちらから
https://www.dropbox.com/s/gkg4z4kry6ntrn8/GameOver.png

まずInveder.umapを再度開きます。

プレイヤーが死んだ際に今まではActorを削除していましたが
削除するとカメラがおかしくなるため、表示と当たり判定をOFFにします。

f:id:swiftnest:20140520234822j:plain:w460

次にMyHUD Blueprintにプレイヤーが非表示だった場合、GameOverを表示するように追加します。

f:id:swiftnest:20140524112320j:plain:w460

最後にPlayer Blueprintに戻り、プレイヤーが非表示だった場合にクリックするとタイトルに移動するようにします。

f:id:swiftnest:20140520235115j:plain:w460

これでゲームオーバーとタイトル遷移が完成です。

最後に

全10回でインベーダーゲームをBlueprintだけで作ってみましたが如何でしたでしょうか?

今回作成したインベーダーゲームのプロジェクト一式を近々アップしますので、是非ダウンロードしてみて下さい。

先日「Unreal Engine 4作品コンテスト、ぷちコン」が発表されました.
http://www.4gamer.net/games/210/G021013/20140520040/

そこで次回からは「横スクロールアクション」を作っていきたいと思います。

第一回目「TP_SideScrollerBP」解説からです。

今後共、よろしくお願いします。

注釈
以前はMath ExpressionのPluginを使用していましたが、プロジェクトをロードする際にPluginがONになってないとエラーでBlueprintから削除されることが判りました。
混乱を避けるため、記事からMath Expression関連を削除しました。念のため、以前作成したBluerprintを載せておきます。
f:id:swiftnest:20140524111241j:plain:w460