俺に解るように説明する "Armory Engine" 入門+

ゲームエンジン Armory Engine (Armory3D) の使い方を手探りで学んで入門しようって感じかな。

P5.エアホッケー.12「YOU WIN / YOU LOSE」

f:id:ore2wakaru:20190521221158p:plain

パックの初期挙動が単調なうちにゲームオーバー処理(どっちか10点取った方が勝ち)を追加しておきたい。パックが出ていく方向がランダムになっちゃうと、意図的にゴールさせて確認出来なくなるからな。今のうちだ。

初期設定に追加

何点取ったら勝ちなのかという情報と()と、今が試合中なのかゲームオーバー中なのかという情報()の2つを追加する。場所はもちろん「」のOn Initに続けて配置だ。

f:id:ore2wakaru:20190521191641p:plain

 10点取ったら勝ちとするので、"katiTen" に "10" をセット。ゴールして点数が入った時、この値と比較し、ゲームオーバーとするか判断する。ま、ここは個人的に11点で勝ちにしたけりゃ、"11"にすればいい。

 Boolean型で "gameSet" を設定。試合中なら False試合終了中(ゲームオーバー)なら True とするフラグ。ゲームスタート時点では、0対0で試合中というかたちで始めるので Value にはチェック無し(False)。

  • 試合中: gameSet = False
  • 試合終了中: gameSet = True
メインループに追加・修正

ちょっと不格好になるが、メインループ(On Update以下)を下図のようにして、試合終了中なら「リトライヵ("RETRYka")」に行き、試合中ならイベント「玉出すヵ("TAMADASUka")- ちかちかヵ("TIKATIKAka")」に行くようにする。イベント "RETRYka" は今後作成

f:id:ore2wakaru:20190521201003p:plain

 Gateで "gameSet" と True を比較し、

 以下の分岐。

  • 「"gameSet" = True」でイベント "RETRYka" へ
  • 「"gameSet" = False」でイベント "TAMADASUka" - "TIKATIKAka" へ

で、結構Boolean型はどっちの場合が True だっけー? ってなるので、名前は分かりやすいのにした方がイイぞ。例えば、"inGame" とかにした場合は、「inGame = True で試合中」とかにすればいいから、こっちの方が分かりやすいかもな。自分にとって分かりやすいものにしてくれ。

Retry ? (Y/N)

イベント「リトライヵ("RETRYka")」ってのは何かって言うと、試合終了のあと再試合するかどうか聞いてくる処理のことね。GAME OVER になったらよく「Retry ? (Y/N)」ってゲームで出るでしょ。あれ。

でも、ココを作るのはもうちょっと後にする。先にどっちが勝ったのかの処理を追加しておきたいからね。イベントの「」だけ作っておいてくれたまえ。

f:id:ore2wakaru:20190521211836p:plain

どっちが勝ったかの処理追加

試合にどっちが勝ったのかという処理を追加する。勝利とする点数は "katiTen"(10点)なので、ゴールした時にこの値と比較すればいい。

 先ずは自分が勝った場合を作る。前回作った "PLAYER_TOKUTEN" の最終部分に追加していく。

f:id:ore2wakaru:20190521211920p:plain

 プレイヤーの得点("playerTen")と勝ちとする点数("katiTen")との比較。イコールならプレイヤー勝ちって事。Gateの中、"Equal" が不安なら別に "Greater Equal" でもいいぞ。

 勝ちな場合、こっち来るよね。ここで、キャンバスに「YOU WIN」と表示させてる。文字の色はこっちのスクリプトから指定できないみたいなので、キャンバスの方で先に指定しておいてくれ。

f:id:ore2wakaru:20190521222827p:plain

で、[Save] ボタン押すの忘れずに・・・。これぜったい忘れる。

 "gameSet" = True に。

ここで一旦テストプレイした方がいいかもな。10点取って「YOU WIN」出て、何も動かなくなったら正解だ。(現状 "RETRYka" が空のイベントで、"gameSet" = True の時は永遠にここに飛ばされるからな。)

 次は敵側。"COM_TOKUTEN" の最終部分に追加。ほぼ同じだから簡潔に。

f:id:ore2wakaru:20190521215439p:plain

 比較するのは "comTen"。

 エレメントは "Text10"、内容は「YOU LOSE」。別にエレメント "Text9"(自分が勝った時の表示領域)に入れてもいいんだけど、色を変えたいじゃん。だから。

テストプレイ

パックの "myDir" を変えて両方のゴールでちゃんと動くか試してな。

で、肝心のゲームオーバー処理、つまりイベント "RETRYka" の作成はーーー、また今度にするわ。また。

本日のフラグ
  • どっちが True? どっちが False? 分かりやすくしとけ。

 次回、Retry ? (Y/N) ...?????????・・・?