【第10回】ゲームオーバー判定を作ろう(ボールに当たったらアウト!)

FUnity Unity
FUnity

こんにちは、パパコーダーです!

第10回では、このゲームのもう一つの核となる
「ボールに当たったらゲームオーバー!」
という見た目の演出を作っていきます。
※当たり判定そのものは第7回で作成済みです

Scratch 版では、主人公がボールに当たったときに
「ゲームオーバー」メッセージ が送られます(これは第7回までで作りました)。
第10回では、そのメッセージを受け取って

  • 画面に「GAME OVER」の絵を表示する
  • 残り時間(変数「あと」)の表示を消す

という、「負けたときの見た目」を Scratch のプログラムに合わせて FUnity で再現します。

🎮 ゲームオーバー判定を作ろう(ボールに当たったらアウト!)


🎮 1. ルールを整理しよう

ここまでで、ゲームの状態はこんな感じです。

  • 主人公がボールに当たると「ゲームオーバー」を送る(第7回)
  • 変数「あと」が 60 から 0 までカウントダウンし、0 になったら「クリア」を送る(第9回)

第10回では、Scratch のスクリプトと同じように、

  • ゲーム開始時:GAME OVER 画像は非表示、残り時間「あと」は表示
  • 「ゲームオーバー」を受け取ったとき:残り時間「あと」を隠して、GAME OVER 画像を表示

という見た目の切り替えを、FUnity の Actor と UI で作っていきます。


🖼 2. GAME OVER 用 Actor を作ろう

まずは「GAME OVER」の文字や画像を表示する専用 Actor を作ります。
Scratch でいうと、GAME OVER のスプライトにあたる部分です。

▼ GameOverActor の作成

  1. FUnity → Create → FUnityActorData を選択
  2. 名前を GameOverActor にする
  3. Sprites に「GAME OVER」と書かれた画像を設定する(シンプルな文字画像でOK)
  4. FUnityProjectData の Actors に GameOverActor を追加する
Actors に GameOverActor を追加する
Actors に GameOverActor を追加する

次に、Script Graph を開いて、Scratch のブロックと同じ動きを作ります。

▼ Scratch のスクリプトとの対応

Scratch の GAME OVER スプライトは、次のようなブロックになっています。

Scratch のプログラム
Scratch のプログラム
ゲームオーバーのプログラムその1
ゲームオーバーのプログラムその1
Scratch のプログラム
Scratch のプログラム
ゲームオーバーのプログラムその2
ゲームオーバーのプログラムその2

FUnity では、これと同じ意味の処理を Script Graph で組みます。

  • 緑の旗を押したとき … ゲーム開始時に呼ばれるイベント
  • 隠す … GameOverActor を非表示にする
  • ゲームオーバーを受け取ったとき … 「ゲームオーバー」メッセージを受け取ったときのイベント(『ゲームオーバー』の文字(全角/半角、空白、濁点)まで完全一致)
  • 表示する … GameOverActor を表示する

これで、ゲーム開始時は見えなくて、ゲームオーバー時だけドーンと出てくる GAME OVER 画像が完成します。


⌛ 3. 残り時間「あと」の表示・非表示を切り替える

Scratch では、GAME OVER スプライトのスクリプトの中で、

Scratch のプログラム
Scratch のプログラム
ゲームオーバーのプログラムその3
ゲームオーバーのプログラムその3

という形で、残り時間「あと」の表示を切り替えています。

FUnity では、「あと」の値を表示している UI(Label)を
GameOverActor から操作するイメージで再現してみましょう。


📣 4. 「クリア」との関係(おさらい)

Scratch の画像には、もうひとつ次のようなブロックも写っています。

Scratch のプログラム
Scratch のプログラム
ゲームオーバーのプログラムその4
ゲームオーバーのプログラムその4

第9回では、FUnity の GameManager Actor で
「あと」が 0 になったら「クリア」を送る処理を実装しました。

今回、第10回ではその部分は触らず、
「ゲームオーバー」を受け取ったときの見た目の変更に集中しています。

つまり、

  • 「クリア」メッセージ → ClearActor が表示(第9回)
  • 「ゲームオーバー」メッセージ → GameOverActor が表示&残り時間を隠す(第10回)

という役割分担になっています。


🧪 5. 動作確認しよう!

Unity で 再生ボタン(▶) を押して、次のようになっているか確認します。

  • ゲーム開始時:GameOverActor は表示されていない
  • ゲーム開始時:残り時間「あと」が表示されている(UI を作っている場合)
  • 主人公がボールに当たると「ゲームオーバー」メッセージが送られる(第7回)
  • 「ゲームオーバー」を受け取ると、GameOverActor が表示される
  • 同時に、残り時間「あと」の表示が消える

この流れになっていれば、Scratch のゲームオーバー演出とほぼ同じものが FUnity でも再現できています。

もし GameOverActor が出てこなかったり、残り時間が消えない場合は、

  • GameOverActor の Script Graph で ゲームオーバーを受け取ったとき が正しく設定されているか
  • メッセージ名が「ゲームオーバー」と完全に一致しているか(全角・半角に注意)
  • UI ラベルの参照(timer-label など)が正しくつながっているか

をチェックしてみてください。


🌟 今回できたこと

  • GAME OVER 用の Actor(GameOverActor)を作った
  • ゲーム開始時に GameOverActor を隠す処理を実装した
  • 「ゲームオーバー」メッセージを受け取ったときに GameOverActor を表示するようにした
  • 残り時間「あと」の表示/非表示をメッセージに合わせて切り替えられるようにした
  • クリア時とゲームオーバー時で、画面の見た目がはっきり分かれるようになった

これでゲームの「勝ち」と「負け」の両方の画面演出がそろいました。
プレイヤーにとっても分かりやすいゲームになってきましたね!


🔜 次回:第11回「unityroomの紹介」

次回は、日本最大級の個人ゲーム投稿サイト「unityroom」を紹介します。
FUnity で作ったゲームを実際に公開して、遊んでもらえるようにしていきましょう!

コメント

タイトルとURLをコピーしました