見出し画像

【Unity】Tag以外で当たり判定を判別する

Unityで当たり判定を行う場合Tagでキャラを判別するのが一般的だと思います。

void OnTriggerEnter2D(Collider2D coll)
    {
        if (coll.tag == "kabe")
        {
            Destroy(gameObject);
        }
    }

こんな感じで”kabe”と当たったらオブジェクト消去してます。
ただ、この場合は”kabe”と当たった物すべてが消去されてしまうんですよね。
例えば下図のような状況で・・・

真ん中の木が植えてある壁には自機弾は当たってほしくないけど通常の壁には当たって欲しい、でも自機自体はどちらの壁にも当たって欲しい・・・
と言うような当たり判定を行いたい時、当たり判定用のTagを複数用意すれば実現出来ますが、そんな事をしなくてもLayerでキャラを判別する事が出来ます。

 void OnTriggerEnter2D(Collider2D coll)
    {
        string layerName = LayerMask.LayerToName(coll.gameObject.layer);

        if (coll.tag == "kabe")
        {
            if (layerName != "kabe_only")
            {
                Destroy(gameObject);
            }
        }

    }

このように書くと当たった物のLayerの名前で判別する事が出来るので壁に当たった時は消去、木の壁に当たった時は消去しないと言うような当たり判定がTag一つで行えます。

この記事が気に入ったらサポートをしてみませんか?