ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

20220329162023

Unity - 2D:ステージから落下したときの処理 -

初めに

 ステージから落下したときの処理を書いていきます。

作っていく処理の内容

 ステージから落下したら残機を減らすために次のことをしていきます。

  • ステージの下に空のオブジェクトを接地し、プレイヤーと当たり判定を取得する
  • 当たり判定を取得したら、残機を減らす

 当たり判定の取得の仕方がよくわからない場合は、下の記事を先にご覧ください。

fineworks-fine.hatenablog.com

作成

 一つずつ作っていきましょう。

ステージの下に空のオブジェクトを接地し、プレイヤーと当たり判定を取得する
  • 空のオブジェクトを作成する

 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" にしています。
 このスクリプトはステージ下に接地した空のオブジェクトにアタッチします。
 
 
 ゲームマネージャーについては、以前の記事で作りましたので、そちらをご覧ください。

実行する

実行結果

 ステージ下に落下したあと、シーンがロードされているため、きちんど処理されていることがわかります。

最後に

 当たり判定の処理ができれば容易にできるかと思います。