[Unity 2D] 特定のLayerに当たったときに処理を実行する方法。

(2024/06/07)

開発環境
  • Unityのバージョン:2023.2.20f1
  • 当たったオブジェクトのLayerを取得する

    タグを使って、特定のタグに当たったときに処理を実行するには「gameObject.CompareTag("")」がありますが、Layerを使っても同じように処理を実行することができます。

    void OnCollisionEnter2D(Collision2D collision)
    {
        //当たったゲームオブジェクトのLayerが「Ground」である場合、Consoleにメッセージを表示する。
        if (collision.gameObject.layer == LayerMask.NameToLayer("Ground"))
        {
            Debug.Log("衝突!");
        }
    } 
    

    このコードでは、ゲームオブジェクトが「Ground」というLayerを設定しているゲームオブジェクトに当たった場合、Consoleにメッセージを表示します。

    実際に使うときには、「Ground」を任意のLayerの名前に変更してください。

    Consoleにメッセージが表示されない場合

    Edit→Project Settings→Physics 2DのLayer Collision Matrixで衝突を検出したいLayerにチェックがついているか確認してください。

    [Unity 2D] 特定のLayerに当たったときに処理を実行する方法。