5. ゲームオーバー判定の作成

前回までの作業がまだ済んでいない場合は、ブロック崩しの作成方法から前回までのチュートリアルを先に済ませてください。

ボールが一番下に落下した場合はゲームオーバーとします。
判定方法はWall Bottomオブジェクトに接触した場合としましょう。
今回はボール以外に衝突するオブジェクトがないため、オブジェクトの種類の判定は省いています。
また落下したBallオブジェクトが残っていると不自然ですので破棄しておきます。

Wall BottomにLogic Behaviorの追加

  • Walls/Wall Bottomオブジェクトを選択
  • InspectorウィンドウのAdd Componentボタンをクリック
  • Logic Toolkit/Logic Behaviorを選択してLogic Behaviorコンポーネントを追加
  • Logic BehaviorのEditボタンをクリックし、Logic Editorウィンドウを開く

Wall BottomのLogic Behaviorを編集

PubOnCollisionEnter.Callbackノードの作成

  • Startノードを削除
  • グラフ上をクリックしフォーカスがある状態で Spaceキーを押し、ノード作成メニューを開く
  • Scriptsタブを選択
  • 検索欄にOnCollisionEnter Callbackと入力
  • 一覧からPubOnCollisionEnter.Callback (Event)を選択

PubOnCollisionEnter.Callbackノードの編集

  • TargetフィールドのRequireをチェック

Collision.gameObjectノードの作成

  • PubOnCollisionEnter.CallbackノードのArg 0フィールドの出力ポートをドラッグ&ドロップし、ノード作成メニューを開く
  • Scriptsタブを選択
  • 検索欄にCollision gameObjectと入力
  • 一覧からGet Collision.gameObject (Compute)を選択

GameObject.Destroyノードの作成

  • Collision.gameObjectノードのGame Objectフィールドの出力ポートをドラッグ&ドロップし、ノード作成メニューを開く
  • Scriptsタブを選択
  • 検索欄にDestroyと入力
  • 一覧からGameObject.Destroy(gameObject) (Action)を選択

OnCollisionEnterとGameObject.Destroyの接続

  • PubOnCollisionEnter.Callbackノードの実行ポートをGameObject.Destroyノードの入力ポートにドラッグ&ドロップして接続

GameObject.SetActiveノードの作成

  • GameObject.Destroyノードの遷移ポートをドラッグ&ドロップし、ノード作成メニューを開く
  • Scriptsタブを選択
  • 検索欄にGameObject SetActiveと入力
  • 一覧からGameObject.SetActive(bool value) (Action)を選択

GameObject.SetActiveノードの編集

  • TargetフィールドにCanvas/Game Overオブジェクトを設定
    以下のいずれかの方法で設定できます。
    • SelfをValueに変更し、オブジェクトフィールドでCanvas/Game Overオブジェクトを設定
    • Selfのまま、HierarchyウィンドウからCanvas/Game OverオブジェクトをTargetフィールドにドラッグ&ドロップ
  • Valueフィールドをチェック

ゲームオーバー判定の挙動確認

ここまで作成するとグラフは以下のようになっています。

プレイ開始してゲームオーバー判定の挙動を確認します。

  • BallがWall Bottomオブジェクトに当たった際に、Ballオブジェクトが破棄され、Game Overオブジェクトがアクティブになることを確認

次回

次回は6. Main Logicの挙動作成を行います。

完了を投稿

ここまでの作業完了をSNSに投稿する場合はこちら。