俺に解るように説明する "Unreal.Engine.4" 入門+

UnrealEngine4とかチュートリアルとか入門とか

【日本語】 UE4 ホッケーゲーム part.26 ゲームオーバー表示UMG 【チュートリアル】

どちらかが10点取ったらゲームオーバーとなるようにしよう。古い画像だけれども、プレイヤーが負けた場合は、こんな感じの表示にする。[Play again] と [Quit] のボタンも付けて、この後どうするか選べるようにしよう。

f:id:ore2wakaru:20160316214242j:plain

 ----------

と、その前に、コンピュータ側もゴールしたら、得点が入るようにブループリントをかいておく。やることは、プレーヤー側とほぼ同じなので、迷うことはないだろう。追加するところは、以下の3箇所。

  1. "ZZ_GameMode"

f:id:ore2wakaru:20160502150252j:plain

  2. 2面のレベルブループリント

f:id:ore2wakaru:20160502151844j:plain

  3. "WG_Score"

f:id:ore2wakaru:20160502153616j:plain

一応、自分のゴールにもわざとパックを入れて、プレイヤー側とコンピュータ側と共に得点が表示されることを確認する。

f:id:ore2wakaru:20160502155029j:plain

----------

ここからが本題。考え方は、これまた単純で、

  1. もし、得点が10点になったら(条件)
  2. ゲームオーバーのウィジェットを表示(条件成立時)

ということで、[Branch] を使って流れを制御すればイイ。場所も得点を増やしている箇所でやるのが適切だ。"ZZ_GameMode" に処理を追加する。

色々な方法が考えられるが、最も簡単な方法として、「YOU WIN」と書いてあるウィジェットと、「YOU LOSE」と書いてあるウィジェットを作って、自分が勝ったら「YOU WIN」の方を、そしてコンピュータが勝ったら「YOU LOSE」の方が出るようにする。2つのウィジェットを作る方法が簡単だ。

先ずは、ウィジェットを作る。作ってから呼ぶ。

----------

  1. ウィジェットブループリントを2つ作成
    "WG_YouWin" と "WG_YouLose" とした
  2. "WG_YouWin" の中身を作る。"YOU WIN" [Text] 部分
     Anchors :  上・中央
     Position X : 0.0
     Position Y :  400.0
     Alignment :  X  0.5   Y  0.0
     Size To Content :  チェック
     Color は適当に変えて
     Font :  240
  3. ボタン部分。[Horizontal Box] の中にボタンを2つ置く
     ボタンの名前をそれぞれ変えておく
     "Button_PlayAgain"、"Button_Quit"
     Padding : 10.0
     Size :  Fill
    [Text] を子供にして、それぞれ
     "Play again"、"Quit"

f:id:ore2wakaru:20160502220531j:plain

【追加の解説】

[1] 1つのウィジェットで、変数を駆使して、あーだこーだして表示させる方法もあるかと思うが、単純な方法を取るため2つウィジェットを用意する。

[2] ここはもう、好きにデザインしてもらって構わない。

[3] ボタン部分は、平行に並べるため [Horizontal Box] を使ったが、なくてもOK。ただ、ボタンの名前は変えておこう。前回は名前を変えなかったので、"Button_xxx" とかなっていて、ちょっとかっこ悪かったべ。それから、名前の横の [Is Variable] に勝手にチェックが入っていることを確認。後でグラフを描く時に必要。

[Padding](パディング「詰め物」)に "10.0" と入れた。 これは、商品を梱包する時、壊れないように周りに新聞紙なんかを敷き詰めたりするやつのこと。ボタンのまわりに "10.0" の空間があく。隣とピッタリくっつくのがヤな場合に設定する。

[Fill] (フィル「占める」)はどのくらいの割合で全場所を占めるかを決めるもの。"Button_PlayAgain" が "1.0" で、"Button_Quit" も "1.0" だと、ボタンの大きさ(横の長さ)は "1:1" の割合になる。つまり、均等に配置される。当たり前だけど、例えば、"1.0" と "2.0" にしたら、長さの比は "1:2" だな。

大丈夫だと思うが、ボタン自体にテキストを書き入れるところはない。[Text] を子に持たせて、そこで文字を表示する。

図では、"WG_YouWin" しかないが、"WG_YouLose" も同様に準備しておいてほしい。

----------

ウィジェットのボタンは、グラフを描いてないのでまだ機能しないが、試しに表示させてみよう。"ZZ_GameMode" に以下、追加する。

  1. 「Bクリ」でブランチノードを出す
  2. [Set ScorePlayer] の出力ピンから引っ張って、"=" で検索して
    [Equal (Integer)] を出す
    下の四角には "10" と書き入れる
    実行線もそうだけど、[Branch] の [Condition] とつなぎ忘れずに
  3. ウィジェットを表示させるには、[Create + Add] だった。
    "Class" はもちろん "WG_YouWin"

f:id:ore2wakaru:20160502231342j:plain

【追加の解説】

もう特に説明は、いらなくなってきたな。いいことだ。

----------

[PointCom] 側の方も、[Create WG_YouLose] にしてちゃんと作ったとして、これで、10点取ったら、ウィジェットは表示されるハズ。だが、

f:id:ore2wakaru:20160502232454j:plain

マレットもパックも動きを止めないので、点数は、どんどん増える。次回はここをなんとかしようと思う。それから、ボタンを機能させる処理も追加する。

ではまた、"Save All"。