Unityでオブジェクトを識別したり、特定のオブジェクトだけ衝突を制御したいとき、「タグ(Tag)」「レイヤー(Layer)」を正しく設定することが重要です。
- 敵・アイテム・プレイヤーなどを識別して処理を分けたい!
- 特定のオブジェクトだけ衝突を判定したい!
- カメラで描画するオブジェクトを制御したい!
タグとレイヤーを活用することで、効率的にゲームオブジェクトを管理し、パフォーマンスを最適化できます! この
記事では、タグとレイヤーの基本から、スクリプトでの操作、レイヤーマスクの活用方法、最適化テクニックまで詳しく解説します!
この記事でわかること
- タグ(タグ)とレイヤー(Layer)の違いと使い方
- スクリプトでタグ・レイヤーを設定・判定する方法
- レイヤーマスクを使って衝突を制御する方法
- カメラの描画設定で特定のレイヤーを非表示にする方法
タグ(Tag)の使い方
タグ(Tag)の設定方法
タグ(Tag)とは、オブジェクトを識別するための名前です。
例えば、プレイヤー、敵、アイテム、チェックポイントなどを分類し、スクリプトから簡単に判定することができます。
・タグ(Tag)の設定方法
- Hierarchyでオブジェクトを選択
- InspectorのTagのドロップダウンを開く
- 既存のTagを選択(または「Add Tag…」で新規作成)

タグ(Tag)のスクリプト判定(オブジェクトの識別判定)
➡ CompareTag(“タグ名”)を使うことで、オブジェクトの識別判定が可能!
//プレイヤーに当たったらダメージを与える
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log("プレイヤーがダメージを受けた!");
}
}
※ 当たり判定については以下のサイトを参考にしてください。
レイヤー(Layer)とは?
レイヤー(Layer)の設定方法
レイヤー(Layer)とは、オブジェクトをグループ化、衝突判定やカメラの描画を制御する仕組みです。
・レイヤー(Layer)の設定方法
- Hierarchyでオブジェクトを選択
- InspectorのLayerのドロップダウンを開く
- 既存のLayerを選択(または「Add Layer…」で新規作成)

レイヤー(Layer)を使って衝突判定を最適化
➡ LayerMaskを使うことで、特定のレイヤーのオブジェクトだけを判定可能!
特定のレイヤーのオブジェクトだけを検出
public LayerMask enemyLayer;
void Update()
{
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, 10f, enemyLayer))
{
Debug.Log("敵を発見!");
}
}
レイヤー(Layer)を使ってカメラに映すオブジェクトを制御(表示・非表示)
➡ CullingMaskを使えば、特定のレイヤーのオブジェクトを非表示にできる!
void Start()
{
int uiLayer = LayerMask.NameToLayer("UI");
if (uiLayer == -1)
{
Debug.LogError("UIレイヤーが存在しません。Unityのレイヤー設定を確認してください。");
return;
}
if (Camera.main != null)
{
Camera.main.cullingMask = ~(1 << uiLayer);
}
else
{
Debug.LogError("Main Cameraが見つかりません。カメラのタグ設定を確認してください。");
}
}
※ Cameraについては以下のサイトを参考にしてください。
タグ(Tag)とレイヤー(Layer)の違い
➡ 「タグ」はオブジェクトの種類を識別するのに使い、
「レイヤー」は衝突や描画の制御に使う!
機能 | タグ(Tag) | レイヤー(Layer) |
---|---|---|
用途 | オブジェクトを識別する | 衝突や描画を制御する |
判定 | CompareTag(“Player”) | gameObject.layer |
設定可能数 | 制限なし | 最大32個 |
衝突判定の最適化 | できない | レイヤーマスクを使用 |
カメラの描画制御 | できない | カリングマスクを使用 |
まとめ
・タグ(Tag)を使えるなら、オブジェクトをスクリプトで識別できる!
・レイヤー(Layer)を簡単に使えるなら、衝突判定やカメラの描画を最適化できる!
・LayerMaskを使えるなら、特定のオブジェクトだけ検出可能!
・レイヤー(Layer)をうまく整理することで、ゲームの処理を軽量化できる!