XR 기술을 활용한 게임 개발자 부트 캠프/TIL

유니티 입문 (4) - 물리, 충돌 처리

담금질 2025. 10. 16. 20:00

1. 물리충돌

유니티는 리지드바디와 콜라이더를 통해 물리 시뮬레이션을 제공한다.

 

주요 역할

- RigidBody  : 물리 시뮬레이션을 담당하는 컴포넌트

- Collider : 충돌 범위를 정의하는 컴포넌트

 

주의할 점

 

2. layer

1. 레이어의 기본 정보 및 구성

  • 정의: 레이어는 특정 특성을 공유하는 오브젝트들을 분류하는 그룹입니다.
  • 개수 제한: 유니티는 총 32개의 레이어를 제공합니다.
    • 기본 레이어 (0~7번): 유니티에서 기본적으로 사용하는 레이어(Default, TransparentFX, Ignore Raycast 등)입니다.
    • 커스텀 레이어 (8~31번): 사용자가 프로젝트에 맞게 직접 이름을 설정하고 사용할 수 있는 레이어입니다.
  • 관리 위치: 메인 메뉴 EditProject Settings → Tags and Layers에서 커스텀 레이어를 설정할 수 있습니다.
  • 오브젝트 할당: 각 게임 오브젝트는 하나의 레이어에만 속할 수 있습니다. (인스펙터 창 오른쪽 상단에서 할당)

2. 레이어의 주요 사용 목적

레이어는 주로 세 가지 주요 영역에서 프로젝트의 성능 최적화 및 로직 구현을 위해 사용됩니다.

1) 렌더링 제어 (Rendering Control)

  • 카메라 컬링 마스크 (Culling Mask):
    • 카메라 컴포넌트에는 Culling Mask 속성이 있습니다.
    • 이 마스크를 사용하여 카메라가 특정 레이어에 속한 오브젝트만 렌더링하도록 설정하거나, 반대로 특정 레이어의 오브젝트를 렌더링에서 제외할 수 있습니다.
    • 활용 예시: 캐릭터 모델은 렌더링하고 싶지만, 무기 트레일이나 특수 효과는 메인 카메라가 아닌 다른 카메라에서만 그리도록 분리할 때 사용합니다.

2) 물리적 충돌 제어 (Physics Collision Control)

  • 레이어 충돌 매트릭스 (Layer Collision Matrix):
    • Project SettingsPhysics 또는 Physics 2D 설정에서 확인할 수 있습니다.
    • 이 매트릭스를 사용하여 특정 레이어에 속한 오브젝트 그룹끼리만 충돌을 계산하도록 설정할 수 있습니다.
    • 활용 예시: "Player" 레이어와 "Enemy" 레이어는 충돌하지만, "Player Bullet" 레이어와 "Player" 레이어는 서로 충돌 계산을 무시하도록 설정하여 불필요한 물리 연산을 줄일 수 있습니다 (성능 최적화).

3) 레이캐스팅 제어 (Raycasting Control)

  • LayerMask:
    • Physics.Raycast나 Physics2D.Raycast 같은 함수를 사용할 때 LayerMask를 인수로 전달하여, 레이가 특정 레이어의 오브젝트만 감지하도록 지정할 수 있습니다.
    • 레이캐스팅은 물리 연산을 수반하기 때문에, 불필요한 오브젝트를 미리 제외하면 성능을 크게 향상시킬 수 있습니다.
    • 활용 예시: 플레이어의 시야(Line of Sight)를 확인하는 레이를 쐈을 때, 배경 오브젝트(Ground 레이어)만 감지하고 몬스터(Enemy 레이어)는 무시하도록 설정할 수 있습니다.

3. Layer와 Tag의 차이점 (비교)

구분 Layer (레이어) Tag (태그)
목적 오브젝트 그룹을 분류하여 렌더링 및 물리 제어 단일 오브젝트식별하여 코드로 찾거나 비교
적용 범위 씬/카메라/물리 시스템 전체에 영향을 미치는 시스템적 그룹 특정 오브젝트를 찾기 위한 단순 라벨
개수 32개로 제한 (비트 플래그로 처리) 개수 제한은 없으나, 많아지면 관리가 어려움
주요 사용처 충돌 매트릭스, 카메라 컬링, 레이캐스트 필터링 GameObject.FindWithTag()이나 other.tag == "Player" 같은 코드 비교
  • Collision 발생 조건

Collision 발생 조건표

  • Trigger 발생 조건

Trigger 발생 조건표

'XR 기술을 활용한 게임 개발자 부트 캠프 > TIL' 카테고리의 다른 글

[디자인패턴] 어댑터 패턴  (0) 2025.10.17
코루틴과 유니티 이벤트  (0) 2025.10.17
유니티 입문 (3)  (0) 2025.10.15
유니티 입문 (2)  (0) 2025.10.14
유니티 입문 (1) 251013  (0) 2025.10.14