07/24 2D 게임 개발을 위한 기본 개념 및 설정 - Scene, 카메라, 물리 설정

심지태
∙∙조회 16
07/24 2D 게임 개발을 위한 기본 개념 및 설정 - Scene, 카메라, 물리 설정

유니티 2D 프로젝트란?

유니티의 2D 프로젝트는 횡스크롤 액션, 퍼즐, 플랫포머, 카드 게임처럼 주로 평면상의 좌표를 활용하는 게임을 제작하는 환경입니다. 캐릭터와 배경은 일반적으로 스프라이트(Sprite) 이미지로 표현하며, 여러 스프라이트를 배치하고 정렬하기 위해 Sprite Renderer, Sorting Layer, Tilemap 등의 기능을 사용합니다. 물리 처리는 Rigidbody2D와 Collider2D 같은 2D 전용 컴포넌트가 담당하고, 화면은 깊이감이 적은 직교 카메라(Orthographic Camera)를 주로 사용합니다. 유니티에서는 2D와 3D가 완전히 분리된 것이 아니라 동일한 엔진 안에서 제공되므로, 2D 프로젝트에도 3D 조명이나 파티클을 추가하여 입체적인 연출을 만들 수 있습니다.

비교 항목2D 프로젝트3D 프로젝트
주요 표현 방식스프라이트와 타일 기반의 평면 그래픽3D 모델과 머티리얼 기반의 입체 그래픽
좌표 활용주로 X축과 Y축 사용X축, Y축, Z축 모두 사용
카메라직교 카메라를 주로 사용원근 카메라를 주로 사용
물리 컴포넌트Rigidbody2D, Collider2DRigidbody, Collider
주요 제작 도구Sprite Editor, Tilemap, 2D AnimationTerrain, Lighting, ProBuilder, 3D Animation
그래픽 리소스PNG 등의 이미지 및 스프라이트 시트메시, 텍스처, 머티리얼, 3D 모델
제작 난이도공간과 연출이 단순해 비교적 입문하기 쉬움모델링·조명·카메라 등 고려할 요소가 많음
대표 장르플랫포머, 퍼즐, 카드, 2D RPGFPS, 레이싱, 오픈월드, 3D 액션
성능 요구일반적으로 비교적 낮음조명과 모델 연산으로 인해 비교적 높음

Projection(투영 방식)

  • Orthographic: 거리에 따른 크기 변화가 없습니다. 일반적인 2D 게임에 적합합니다.
  • Perspective: 멀리 있는 물체가 작게 보입니다. 주로 3D 게임에 사용하지만 원근감이 있는 2.5D 게임에도 활용됩니다.
  • Size: 카메라가 세로 방향으로 보여주는 범위를 설정합니다. Size = 5이면 화면 중심을 기준으로 위아래 각각 5유닛, 총 10유닛 높이가 보입니다. 값이 커지면 더 넓은 범위가 보여 오브젝트가 작아지고, 작아지면 확대된 것처럼 보입니다.
  • Clipping Planes: 카메라가 렌더링할 거리 범위입니다. 이미지의 설정에서는 카메라로부터 Near 0.3보다 가깝거나 Far 1000보다 먼 오브젝트가 표시되지 않습니다.

3D와 2D는 호환되지 않습니다.

3D2D주의
RigidbodyRigidbody2D서로 호환되지 않습니다
Box ColliderBox Collider 2D서로 감지하지 못합니다
Sphere ColliderCircle Collider 2D이름도 다릅니다

Culling Mask란?

메인 카메라의 Culling Mask는 카메라가 어떤 Layer(레이어)의 오브젝트를 화면에 렌더링할지 선택하는 기능입니다. 예를 들어 Enemy 레이어를 Culling Mask에서 제외하면 해당 레이어의 적 캐릭터는 메인 카메라 화면에 보이지 않습니다.

항목설명
작동 기준각 GameObject에 지정된 Layer를 기준으로 작동합니다.
레이어 선택선택된 레이어의 오브젝트만 해당 카메라에 렌더링됩니다.
레이어 제외제외된 레이어의 오브젝트는 해당 카메라 화면에 표시되지 않습니다.
Everything모든 레이어를 렌더링합니다.
Nothing어떤 레이어도 렌더링하지 않습니다.
활용 예시특정 오브젝트 숨기기, 미니맵 전용 카메라, UI 카메라 분리 등에 사용합니다.

중요한 점은 Culling Mask가 카메라의 렌더링만 제한한다는 것입니다. Culling Mask에서 제외해 오브젝트가 화면에 보이지 않더라도 GameObject 자체가 비활성화되는 것은 아닙니다. 따라서 다음과 같은 기능은 계속 실행됩니다.

  • Rigidbody2D와 Collider2D를 이용한 충돌 및 물리 작용
  • Update() 등의 스크립트 실행
  • 오브젝트 이동과 애니메이션 처리
  • 오디오 재생
  • 다른 오브젝트와의 상호작용
  • 다른 카메라에 의한 렌더링

즉, Culling Mask에서 제외된 오브젝트는 존재하지 않는 것이 아니라 해당 카메라의 눈에만 보이지 않는 상태입니다. 물리 충돌까지 막으려면 Culling Mask가 아니라 Layer Collision Matrix, Collider 비활성화 또는 GameObject 비활성화 등의 설정을 별도로 사용해야 합니다.