UnityUnityメモ

UnityのTagとLayerの違いとは?初心者でもわかる実践的な使い分け解説!

Unity

1. はじめに|TagとLayerの違いが分からないあなたへ

Unityでゲームを作っていると、オブジェクトに「Tag(タグ)」や「Layer(レイヤー)」を設定する場面に出会いますよね。でも、「どっちを使えばいいの?」「何が違うの?」と迷ったことはありませんか?

実はこの2つ、目的がまったく違うんです。

  • Tagは「このオブジェクト、◯◯グループに属してるよ」という名札のようなもの。
  • Layerは「このオブジェクト、◯◯と衝突するかどうかを決めるよ」という仕分けルールのようなもの。

この使い分けをしっかり理解しておくと、スクリプトでの処理や物理演算、カメラの表示設定などが一気にスマートになります。

この記事では、初心者の方にもわかりやすいように、TagとLayerの違い・設定方法・実践的な使い方をやさしく解説していきます。

「いまいちピンとこない…」という方も、読み終える頃にはすっきり理解できているはず!一緒にUnityスキルをレベルアップしていきましょう!




2. Tag(タグ)とは?

「Tag(タグ)」は、Unityでオブジェクトをグループとして識別するためのラベルのようなものです。主にスクリプト内で特定のオブジェクトを見つけたり、条件分岐に使ったりする場面で活躍します。

🔹 例えばこんな使い方

プレイヤーが敵にぶつかったとき、敵だけを判定したいときにこう書きます👇

if (other.gameObject.tag == "Enemy")
{
// 敵に当たったときの処理
}

上記のように、タグ名「Enemy」が設定されていれば、敵キャラだけを判別できます。名前ではなくタグでまとめることで管理がぐっとラクになります。


🔧 タグの追加方法(手順)

  1. 任意のゲームオブジェクトを選択します。
  2. インスペクター右上の「Tag」をクリック。
  3. 表示されたリストの下部にある「Add Tag…」を選択。
  4. 開いた画面で「」ボタンをクリックし、新しいタグ名(例:「Wall」)を入力。
  5. 登録後、再びオブジェクトのインスペクターで、追加したタグを選び直しましょう。

これでオブジェクトにタグが付与されました!


🎯 よく使うタグの例

タグ名用途例
Playerプレイヤーキャラの判定
Enemy敵キャラの識別
Wall壁への当たり判定
Itemアイテム取得時の判別

✅ Tagの注意点

  • タグ名は大文字小文字を区別します(”Player”と”player”は別物!)
  • 設定しないとスクリプトで見つけられません
  • タグは一つのオブジェクトに対して一つだけ設定できます



3. Layer(レイヤー)とは?

「Layer(レイヤー)」は、Unityでオブジェクトの衝突判定やカメラの表示範囲をコントロールするためのカテゴリです。Tagが「名前札」なら、Layerは「動作ルールのグループ分け」といったイメージです。


🧱 レイヤーの主な用途

① 衝突判定を制御する(Physics設定)

たとえば、「プレイヤー同士は当たるけど、敵とはすり抜けたい」というような場合、Layer同士の衝突をOFFにすることで簡単に実現できます。

やり方はこうです👇

  1. 上部メニューから「Edit > Project Settings」を開く
  2. 左側の「Physics」を選択
  3. Layer Collision Matrix」で衝突させたいレイヤー同士のチェックをオン/オフ

この設定で、物理的な衝突が発生するかどうかを細かくコントロールできます。


② カメラの表示・非表示を切り替える(Culling Mask)

レイヤーは、カメラに見せるかどうかの設定にも使えます。

たとえばミニマップ用のカメラで「敵だけ映したい」場合:

  1. 敵オブジェクトを「Enemy」レイヤーに設定
  2. ミニマップカメラの「Culling Mask」で「Enemy」だけONにする

これでメインカメラとは別の視点を作ることもできます。


🔧 レイヤーの追加方法

  1. 任意のゲームオブジェクトを選択し、インスペクターの「Layer」をクリック
  2. Add Layer…」を選ぶ
  3. 空欄に新しいレイヤー名を入力(例:「PlayerCharacter」)
  4. 入力後、再びオブジェクトを選択し、レイヤーを選び直して適用

※ Layerは最大32個までしか追加できない点に注意してください!


🗑 レイヤーの削除方法

  1. 先ほどの「Add Layer…」画面を開きます
  2. 該当のレイヤー名を空欄に戻すか、無効にしておくことで実質的に削除扱いになります
  3. 削除したレイヤーは物理設定(Layer Collision Matrix)からも消えます



4. TagとLayerの違いを表で比較!

ここまでで、TagとLayerそれぞれの役割がなんとなく見えてきたと思います。でも実際に使い分けるとなると、「どっちを使えばいいの?」と迷うこともありますよね。

そんなときに役立つよう、TagとLayerの違いを表にまとめました👇

比較項目Tag(タグ)Layer(レイヤー)
主な用途スクリプトでの識別・検索衝突判定やカメラ表示制御
使える数無制限(ただし1オブジェクトに1つ)最大32個(0~31のレイヤースロット)
複数の設定可否1つのオブジェクトに1つだけ1つのオブジェクトに1つだけ
設定方法Inspectorの「Tag」メニューInspectorの「Layer」メニュー
代表的な使い方「Enemy」タグを使って敵を一括処理「Player」レイヤー同士だけが衝突するように設定
制御できる範囲スクリプト処理の分岐や検索のみPhysics・Camera・Lightingの挙動に影響

✅ 結論:目的で使い分けよう!

  • オブジェクトをスクリプトで判別したい → Tag
  • 衝突判定やレンダリングをコントロールしたい → Layer

どちらもインスペクターで簡単に設定できるので、目的に合わせてうまく使い分けていきましょう!




5. 実践!使い分け方のシーン別解説

ここからは、実際のゲーム制作で「Tag」と「Layer」をどう使い分けるのか、具体的なシーンを3つ紹介します。Unity初心者の方でもイメージしやすいよう、やさしく解説していきますね!


🎮 シーン①:プレイヤーと敵の衝突を制御したい

目的:

  • プレイヤーと敵はぶつかるようにしたい
  • 敵同士はすり抜けるようにしたい

やり方:Layerを使う!

  1. 「Player」レイヤーと「Enemy」レイヤーを作成
  2. プレイヤーには「Player」、敵には「Enemy」レイヤーを設定
  3. 「Edit > Project Settings > Physics」で「Layer Collision Matrix」を開き、
     「Enemy × Enemy」のチェックを外す

これで、敵同士はぶつからず、プレイヤーとは衝突するようになります!


🎯 シーン②:敵オブジェクトだけをスクリプトで判定したい

目的:

  • プレイヤーが敵に当たったときだけ、HPを減らしたい

やり方:Tagを使う!

  1. 「Enemy」タグを追加
  2. すべての敵オブジェクトに「Enemy」タグを設定
  3. スクリプトでこんな風に書く👇
void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Enemy")
{
// ダメージ処理など
Debug.Log("敵に当たった!");
}
}

スクリプト内で簡単に敵を判定できます!


📷 シーン③:カメラに映すオブジェクトを切り替えたい

目的:

  • メインカメラでは全体を表示
  • サブカメラでは「敵だけ」を映したい

やり方:Layerを使う!

  1. 敵オブジェクトに「Enemy」レイヤーを設定
  2. サブカメラの「Culling Mask」で「Enemy」だけをONにする

すると、サブカメラには敵だけが映るミニマップ風表示が完成します!


🔁 まとめ:場面ごとにTagとLayerを使い分けよう

シーン例選ぶべき設定
衝突判定・カメラ制御Layer
スクリプトの処理分岐Tag



6. よくあるミスとその対処法

TagやLayerは便利な仕組みですが、初心者の方がよくやってしまうミスもあります。ここではありがちな失敗パターンとその解決方法を紹介します!


❌ ミス①:タグを付けたつもりが認識されない

原因:

  • オブジェクトにタグを設定したあと、適用し忘れている
  • タグ名の大文字・小文字の違いで一致しない

対処法:

  • オブジェクトを選び直して正しいタグが選ばれているか確認しましょう
  • スクリプトでは**”Player”と”player”は別物**です。スペルに注意!

❌ ミス②:レイヤーを設定したのに衝突しない(または衝突してしまう)

原因:

  • 「Physics」設定のLayer Collision Matrixで、対象レイヤー同士のチェックが外れている or 入っている

対処法:

  1. Unityメニュー「Edit > Project Settings > Physics」を開く
  2. 「Layer Collision Matrix」で、衝突させたいレイヤー同士のチェックをON
  3. 衝突させたくないレイヤーはOFF

設定を間違えると「当たり判定がない…」というトラブルの元になります!


❌ ミス③:カメラにオブジェクトが映らない

原因:

  • カメラの「Culling Mask」で表示対象のレイヤーがOFFになっている

対処法:

  • 対象オブジェクトのレイヤーと、カメラのCulling Maskの設定を再確認しましょう!

✅ ミスを防ぐためのコツ

  • 新しくTagやLayerを作成したら、必ず設定を適用しなおす
  • スクリプトで使う場合はタグ名やレイヤー名を定数で管理するのもおすすめ
  • 複数人で開発する場合は、Tag/Layerの使い方ルールを決めておくとトラブル防止になります



7. まとめ|TagとLayerの理解でUnity開発がもっとラクになる!

Unityにおける「Tag」と「Layer」は、どちらもオブジェクトの分類や制御に欠かせない基本機能です。

この記事ではそれぞれの役割と使い方、そして実践的なシーンでの使い分け方を紹介しました。


🎯 要点をふりかえり!

  • Tagは、スクリプトで特定のオブジェクトを見つけるための「名前札」
  • Layerは、衝突判定やカメラの表示設定などに使う「分類ラベル」
  • TagとLayerは両方使ってOK! 目的に合わせて使い分けるのがポイント
  • よくあるミス(タグ名ミス、Layer設定漏れ)は初心者あるあるなのでしっかり対策しよう!

TagとLayerの違いを正しく理解すれば、スクリプトがシンプルになり、物理や表示の設定も効率的に進められます。まさに「覚えておいて損なし」の基本中の基本です!

ぜひ今回の内容を参考にして、今後のゲーム開発に活かしてみてくださいね✨


✅ あわせて読みたい

TagやLayerに関連する基本操作や衝突判定をさらに深く理解したい方におすすめの記事をピックアップしました👇


よくある質問(FAQ)

Q
TagとLayerは同時に設定しても大丈夫?
A

はい、大丈夫です! Tagはスクリプト用、Layerは物理や表示制御用なので、それぞれの用途に合わせて設定しましょう。

Q
Layerが多すぎて管理が大変です。どうすればいい?
A

命名規則を決めて整理しましょう。 たとえば「Player_」「Enemy_」「UI_」などの接頭語をつけると混乱しにくくなります。

Q
すでに設定したTagやLayerをまとめて変更できますか?
A

Unityエディタ上では1つずつ手動で変更しますが、 複数オブジェクトを選択して一括設定も可能です。さらに効率化したい場合はスクリプトで変更処理を組む方法もあります。

C-BA Unity-memo
タイトルとURLをコピーしました