본문으로 건너뛰기
Unity C# 기초집LESSON 13

태그와 Layer

난이도초급
예상 시간30분
선수지식12강 Trigger 판정

13강. 태그와 Layer

1. 이번 강의에서 해결할 문제

모든 Collider가 서로 검사하고 문자열 이름으로 택배인지 판정합니다. 종류 식별과 물리 충돌 필터를 각각 올바른 도구로 정리합니다.

2. 학습 목표

3. 핵심 개념

Tag는 GameObject의 의미를 나타내는 단일 표식이고 Layer는 렌더링·물리 필터 그룹입니다. 택배 종류 Blue·Orange는 게임 데이터이므로 Tag를 늘리지 않고 PackageItem의 데이터로 관리합니다. Layer는 Package와 Zone이 필요한 조합에서만 충돌하게 합니다.

4. 단계별 실습

Unity Editor 작업

  1. Edit > Project Settings > Tags and Layers에서 Package, SortZone Layer를 추가합니다.
  2. Package Prefab은 Package, BlueZone·OrangeZone·MissZone은 SortZone Layer로 설정합니다.
  3. Physics 2D의 Layer Collision Matrix에서 Package–SortZone만 필요한 조합을 남깁니다.
  4. Scene 뷰의 Gizmo와 Physics Debugger 위치가 버전마다 다를 수 있으니 현재 Unity 6 문서를 확인합니다.

C# · 파일 경로: Assets/DeliverySorter/Scripts/Zones/SortZone.cs

SortZone.cs
using UnityEngine;

public sealed class SortZone : MonoBehaviour
{
[SerializeField] private PackageKind acceptedKind;
[SerializeField] private LayerMask packageLayer;

private void OnTriggerEnter2D(Collider2D other)
{
int otherMask = 1 << other.gameObject.layer;
if ((packageLayer.value & otherMask) == 0) return;
if (!other.TryGetComponent(out PackageItem package)) return;
if (!package.TryResolve()) return;

Debug.Log(package.Kind == acceptedKind ? "Correct" : "Wrong", package);
Destroy(package.gameObject);
}
}

Inspector 연결 작업

SortZone의 Package Layer Mask에서 Package만 체크합니다. Layer 이름을 코드 문자열로 찾지 않고 Inspector가 저장한 비트 마스크를 사용합니다.

5. 코드가 동작하는 이유

Physics 2D 설정이 불필요한 충돌 후보를 먼저 줄이고, 스크립트의 LayerMask가 이 Zone이 받을 그룹을 명시합니다. 마지막으로 TryGetComponent가 실제 PackageItem 계약을 확인합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

태그와 Layer 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“태그와 Layer”의 위험한 선택을 피하려면 어떤 원칙을 적용해야 하나요?
  2. 문제 2‘Matrix를 바꾸고 기존 오브젝트 Layer를 안 바꿈’ 상태에 관한 “태그와 Layer” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

13강. 태그와 Layer 미완료 상태