Unity入門

【Unity】Tag・Layerの使い方 | スクリプト、オブジェクト識別、衝突判定、表示・非表示

使用環境

・Unity Editor:2021.3.18f1

この記事でわかること

  • TagとLayerの基本的な違いと役割
  • Tag・Layerの設定手順
  • CompareTagやLayerMaskの使い方
  • 衝突や描画の制御におけるベストプラクティス

UnityでTag・Layerを活用するには?

ピッグダディ

タグ(Tag)はオブジェクトの種類を識別するため、レイヤー(Layer)は衝突や描画を制御するために使うんだ。
Unityでゲームを作るときには欠かせない機能だよ!

ピッグボーイ

敵とプレイヤーの処理を分けたいんですけど、
タグとか使うって聞きました!

ピッグガール

私はカメラにUIだけ映したくて、
レイヤーをどう使うか調べてたところ!

ピッグダディ

いいね。タグとレイヤーを正しく使えば、オブジェクトの管理も衝突処理もグッと楽になるよ。この記事では、基本からスクリプトでの使い方、描画や当たり判定の最適化まで、わかりやすく解説していくよ!

タグ(Tag)の使い方とスクリプト操作

タグ(Tag)とは?

オブジェクトに名前を付けてグループ化・識別できる機能です。 スクリプトから CompareTag(“タグ名”) を使って簡単に判定できます。

タグ(Tag)の使い方

  1. オブジェクトを選択(Hierarchy)
  2. InspectorでTagドロップダウンを開く
  3. 既存のタグを選ぶ or 「Add Tag…」で新規作成
Unity Tagの設定の画像

タグ(Tag)のスクリプト判定(オブジェクトの識別判定)

//プレイヤーに当たったらダメージを与える
void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        Debug.Log("プレイヤーがダメージを受けた!");
    }
}

※ 当たり判定については以下のサイトを参考にしてください。

レイヤー(Layer)の使い方と最適化

レイヤー(Layer)とは?

物理演算(衝突)やカメラ描画など、オブジェクト同士の関係性を制御するためのカテゴリ分けです。 最大32個まで定義可能で、主にパフォーマンスと制御性向上に使われます。

レイヤー(Layer)の使い方

  1. Hierarchyでオブジェクトを選択
  2. InspectorのLayerのドロップダウンを開く
  3. 既存のLayerを選択 or 「Add Layer…」で新規作成
Unity Layerの設定の画像

レイヤー(Layer)の実践例

LayerMaskを使って特定のレイヤーとだけ衝突判定

特定のレイヤーのオブジェクトだけを検出
public LayerMask enemyLayer;

void Update()
{
    RaycastHit hit;
    if (Physics.Raycast(transform.position, transform.forward, out hit, 10f, enemyLayer))
    {
        Debug.Log("敵を発見!");
    }
}

CullingMaskでカメラに映すレイヤーを制限

void Start()
{
    int uiLayer = LayerMask.NameToLayer("UI");
    if (Camera.main != null && uiLayer != -1)
    {
        Camera.main.cullingMask = ~(1 << uiLayer); // UIだけ非表示にする
    }
}


※ Cameraについては以下のサイトを参考にしてください。

タグ(Tag)とレイヤー(Layer)の違い

機能タグ(Tag)レイヤー(Layer)
主な用途オブジェクト識別衝突判定・描画制御
判定方法CompareTag(“タグ名”)gameObject.layer、LayerMask など
数量制限制限なし最大32個
衝突制御不可可(Physics設定・LayerMask)
描画制御不可可(CameraのCulling Mask)

まとめ

・タグ(Tag)はオブジェクトを識別して処理を分けるために使う
・レイヤー(Layer)は衝突や描画の制御を効率化し、パフォーマンスを最適化するために使う
・CompareTagやLayerMaskを使えば、スクリプトから柔軟に制御可能
・カメラのCulling Maskや物理レイヤー設定と組み合わせて使うとさらに便利

タグ(Tag)とレイヤー(Layer)の使い方をマスターして、プロジェクトの構造をもっと整理・効率化しよう!