前回までの作業がまだ済んでいない場合は、ブロック崩しの作成方法から前回までのチュートリアルを先に済ませてください。
ボールが一番下に落下した場合はゲームオーバーとします。
判定方法は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に投稿する場合はこちら。