ゲーム作りの合間に息抜きのゲーム作り パート4
ただいま製作中のゲーム! UnrealEngine4で『暁の航路』制作中(メインプログラマー:GAISUTO) Unityで『(タイトル未定)』制作中(メインプログラマー:ざわわ) UnrealEngine4で『(タイトル未定)』(息抜き&学習用)
本職に影響がでないように製作するので結構スローペースになります。 原稿の合間に落書きを描いて、ゲーム作りの合間に息抜きでゲームを作って、仕事の合間はゲームをして息抜き。
——–本日!——– 息抜きでUnrealEngine4でゲームを制作です。本日は6時間、累計制作時間23時間30分 久しぶりにバゲットを丸々1本使ってサンドイッチ作った。 太くておっきいので半分はお昼ごはん、もう半分は夜ご飯です。 今日のパンは顎がしんどい。
作業 ・旗に触れると旗が変化して、チームの得点が加算される。
まずは、ブループリントを整理しました。 GameModeのブループリント(ゲームのルール) GameInstanceのブループリント(レベルが変わっても値を持っている) レベルが変わるとは(タイトルレベル→バトルレベル→リザルトレベル)みたいなもの ブループリントなんてどれも同じだろうと思ってたのでGameInstanceの存在を知って目から鱗でした。 得点を加算とか減算ってゲームのルールじゃないのかなぁとGameModeでずっと作ってましたが破棄しました。
編集→プロジェクトの設定 GameInstanceに自分の作ったMyGameInstanceを設定。 これで値を保持してくれるはず! 一応、GameDefaultMapとEditorStartupMapに作業中のマップを設定して、 DefaultGameModeもThirdParsonのやつからBattleModeに変更。 DefaultPawnClassはユニティちゃんです。
MyGameInstanceの中身。 5つほど変数を作りました。 得点関係、時間関係、旗の位置情報(※) ※使い道なかったら削除予定
旗に触れて旗が変化する部分の処理 TriggerBoxにFlag(int型)の変数を作ったので、そこを初期化しておきます。 最初は0に固定されてるという安心感がほしい。 Flag:0が中立旗、1が赤旗、2が青旗
・自分は赤チーム、旗中立の時の流れ(青チームが接触したときも同じ流れ)
・赤の得点加算 ・中立フラグかそうでないかを見る →中立旗の場合(なにもしない) →青旗の場合(青の得点減算)
・旗の情報を赤にする。
旗が赤へ変化した後、シーケンスで2つ処理 1つ目はMyGameInstanceから赤得点をゲットして、1足して、セット。 [Switch on int]にこのBoxTriggerのFlag情報をいれます。 Flag情報が0なら中立旗なので、Flag情報に1をいれて赤旗にします。 2なら青旗なので、青の得点を減算して、Flag情報に1をいれて赤旗にします。 (今後、加算・減算系は関数化すると思います。)
スコアを表示 本番ではゲーム時間が10分の場合5分の時に30秒だけ表示するようにしようと思います。 4チームバトルができるようになったらこれが、面白い方向に作用してくれるはず! 見た目の部分は、パレットから画面にVerticalBoxをドラッグ&ドロップ設置して、その中にTextを2つ上下に設置。 右側のプロパティの中でContentのTextに上側はRedTeamScore、下側は0と設定 下側のTextの一番右にバインディングを作成とあるので作成 バインディング ここが納得がまだいってない場所! GameInstanceの参照ができない! なのでキャストで作成してます。 関数の名前をRedTeamScoreにして、得点をMyGameInstanceからゲットして、[ToText]で得点をtext型にして、ReturnValueに与えます。 これで表示されている0が変化します。 どうにかすれば、こんな感じにシンプルになるはず、"NOTE"という表示もなくなるし
つぎにゲーム画面でRedTeamScoreと得点を表示させる。 コンテンツブラウザとかフィールドが表示されている画面の上のツールバーのブループリントから レベルブループリントを開いて、ゲームが始まったらウィジェットを表示するようにします。 [GameStateウィジェットを作成]で上で作ったGameStateを作成して、AddtoViewportで画面に表示。
あとは、ゲームを初めて、旗に接触したら旗が変わって、赤チームタグを持つユニティちゃんなので 赤チームの得点が加算されます。
<次回> ・NPCユニティちゃんが出現!? ・フィールドを拡張、陸地から続く長い階段の先に待つフロアは一体・・・