読者です 読者をやめる 読者になる 読者になる

ゲーム作りの合間に息抜きのゲーム作り パート4

ただいま製作中のゲーム! UnrealEngine4で『暁の航路』制作中(メインプログラマー:GAISUTO) Unityで『(タイトル未定)』制作中(メインプログラマー:ざわわ) UnrealEngine4で『(タイトル未定)』(息抜き&学習用)

本職に影響がでないように製作するので結構スローペースになります。 原稿の合間に落書きを描いて、ゲーム作りの合間に息抜きでゲームを作って、仕事の合間はゲームをして息抜き。

——–本日!——– 息抜きでUnrealEngine4でゲームを制作です。本日は6時間、累計制作時間23時間30分 久しぶりにバゲットを丸々1本使ってサンドイッチ作った。 太くておっきいので半分はお昼ごはん、もう半分は夜ご飯です。 今日のパンは顎がしんどい。

作業 ・旗に触れると旗が変化して、チームの得点が加算される。

まずは、ブループリントを整理しました。 GameModeのブループリント(ゲームのルール) GameInstanceのブループリント(レベルが変わっても値を持っている) レベルが変わるとは(タイトルレベル→バトルレベル→リザルトレベル)みたいなもの ブループリントなんてどれも同じだろうと思ってたのでGameInstanceの存在を知って目から鱗でした。 得点を加算とか減算ってゲームのルールじゃないのかなぁとGameModeでずっと作ってましたが破棄しました。 20160220230451

編集→プロジェクトの設定 GameInstanceに自分の作ったMyGameInstanceを設定。 これで値を保持してくれるはず! 一応、GameDefaultMapとEditorStartupMapに作業中のマップを設定して、 DefaultGameModeもThirdParsonのやつからBattleModeに変更。 DefaultPawnClassはユニティちゃんです。 20160220230515

MyGameInstanceの中身。 5つほど変数を作りました。 得点関係、時間関係、旗の位置情報(※) ※使い道なかったら削除予定 20160220230438

旗に触れて旗が変化する部分の処理  TriggerBoxにFlag(int型)の変数を作ったので、そこを初期化しておきます。  最初は0に固定されてるという安心感がほしい。  Flag:0が中立旗、1が赤旗、2が青旗 20160220230414

・自分は赤チーム、旗中立の時の流れ(青チームが接触したときも同じ流れ)

 ・赤の得点加算  ・中立フラグかそうでないかを見る   →中立旗の場合(なにもしない)   →青旗の場合(青の得点減算)

 ・旗の情報を赤にする。

 旗が赤へ変化した後、シーケンスで2つ処理  1つ目はMyGameInstanceから赤得点をゲットして、1足して、セット。  [Switch on int]にこのBoxTriggerのFlag情報をいれます。  Flag情報が0なら中立旗なので、Flag情報に1をいれて赤旗にします。  2なら青旗なので、青の得点を減算して、Flag情報に1をいれて赤旗にします。  (今後、加算・減算系は関数化すると思います。) 20160220230359

スコアを表示  本番ではゲーム時間が10分の場合5分の時に30秒だけ表示するようにしようと思います。  4チームバトルができるようになったらこれが、面白い方向に作用してくれるはず!  見た目の部分は、パレットから画面にVerticalBoxをドラッグ&ドロップ設置して、その中にTextを2つ上下に設置。  右側のプロパティの中でContentのTextに上側はRedTeamScore、下側は0と設定  下側のTextの一番右にバインディングを作成とあるので作成 2016022023053220160220230535 20160220235909    バインディング  ここが納得がまだいってない場所! GameInstanceの参照ができない!  なのでキャストで作成してます。  関数の名前をRedTeamScoreにして、得点をMyGameInstanceからゲットして、[ToText]で得点をtext型にして、ReturnValueに与えます。  これで表示されている0が変化します。 2016022023055420160220230607  どうにかすれば、こんな感じにシンプルになるはず、"NOTE"という表示もなくなるし 20160220224642

つぎにゲーム画面でRedTeamScoreと得点を表示させる。  コンテンツブラウザとかフィールドが表示されている画面の上のツールバーのブループリントから  レベルブループリントを開いて、ゲームが始まったらウィジェットを表示するようにします。  [GameStateウィジェットを作成]で上で作ったGameStateを作成して、AddtoViewportで画面に表示。 20160221000833

 あとは、ゲームを初めて、旗に接触したら旗が変わって、赤チームタグを持つユニティちゃんなので 赤チームの得点が加算されます。 20160220230725

<次回>  ・NPCユニティちゃんが出現!?  ・フィールドを拡張、陸地から続く長い階段の先に待つフロアは一体・・・