Unity - 2D:ステージから落下したときの処理 -
初めに
ステージから落下したときの処理を書いていきます。
作っていく処理の内容
ステージから落下したら残機を減らすために次のことをしていきます。
- ステージの下に空のオブジェクトを接地し、プレイヤーと当たり判定を取得する
- 当たり判定を取得したら、残機を減らす
当たり判定の取得の仕方がよくわからない場合は、下の記事を先にご覧ください。
作成
一つずつ作っていきましょう。
ステージの下に空のオブジェクトを接地し、プレイヤーと当たり判定を取得する
- 空のオブジェクトを作成する
Hierarchyで右クリック→Create Emptyをクリックする
名前は分かりやすいように変えておきましょう。本記事では "FallObject" としています。
- BoxCollider2Dをアタッチし、IsTriggerにチェックを入れる
オブジェクトのAddComponentからBoxCollider2Dを追加しましょう。また、IsTriggerにチェックをいれましょう。チェックをいれないとプレイヤーがこのオブジェクトをすり抜けず、ぶつかります。
オブジェクトのサイズもステージの下全体になるように広げておきましょう。
当たり判定を取得したら、残機を減らす
当たり判定を取得したり、残機を減らしたりするためにスクリプトを書いていきます。
(ステージ下に接地した空のオブジェクトにアタッチするスクリプト)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class FallScript : MonoBehaviour { //GameManager private GameObject _gameManagerObject; GameManager GMScript; void Start() { //GameManagerを取得 _gameManagerObject = GameObject.Find("GameManager"); GMScript = _gameManagerObject.GetComponent<GameManager>(); } //当たり判定を取得 void OnTriggerEnter2D(Collider2D t) { if(t.CompareTag("Player")) { Debug.Log("落ちたで"); GMScript.PlayerFailed(); } } }
ゲームマネージャーを取得し、プレイヤーに当たったら、ゲームマネージャーから残機を減らす関数を呼び出すようにしています。IsTriggerにチェックを入れているので、"OnTriggerEnter2D" にしています。
このスクリプトはステージ下に接地した空のオブジェクトにアタッチします。
ゲームマネージャーについては、以前の記事で作りましたので、そちらをご覧ください。
実行する
実行結果
ステージ下に落下したあと、シーンがロードされているため、きちんど処理されていることがわかります。
最後に
当たり判定の処理ができれば容易にできるかと思います。