안동민 개발노트

본문 시작

콜리전 시스템 기본 개념

콜리전 프리셋·채널·응답·메시 유형을 구분하고 Hit·Overlap 이벤트와 트레이스로 충돌을 처리합니다.

지난 절에서 질량과 힘 제어를 다뤘다면, 이제 물리 상호작용의 핵심인 콜리전(Collision)으로 넘어갑니다.

콜리전은 오브젝트가 어떻게 부딪히고 반응하는지 정의하며, 데미지 판정, 상호작용 트리거, 물리 피드백 같은 대부분의 게임플레이 이벤트 기반이 됩니다.

이번 절에서는 콜리전 설정 방법과 콜리전 이벤트를 게임플레이 로직에 연동하는 흐름을 정리합니다.


콜리전(Collision)이란 무엇인가?

콜리전(Collision)은 게임 월드 오브젝트 간 충돌을 감지하고 반응시키는 시스템입니다.

언리얼은 기본 도형·볼록 형상으로 구성한 단순 충돌과 메시의 삼각형을 이용하는 복잡 충돌을 구분합니다. 쿼리와 시뮬레이션 요구에 맞춰 사용할 형상을 선택합니다.

이 콜리전 메시 간 교차 여부를 검사해 충돌을 판단하고, 물리 반응(튕김, 정지) 또는 이벤트(On Hit, On Overlap)를 발생시킵니다.

콜리전이 필요한 이유
  • 물리적 상호작용: 캐릭터가 벽에 부딪혀 멈추거나, 총알이 오브젝트에 맞아 튕겨 나가거나 파괴되는 등의 물리적 반응을 구현합니다.
  • 게임플레이 로직: 플레이어가 특정 아이템을 획득하거나, 적이 특정 영역에 진입했을 때 이벤트를 발생시키는 등의 상호작용 로직을 구현합니다.
  • 성능 최적화: 복잡한 실제 메시 대신 단순한 콜리전 메시를 사용하여 충돌 계산의 오버헤드를 줄입니다.

콜리전 설정의 세 가지 주요 단계

언리얼 엔진에서 콜리전을 설정하는 방법은 크게 세 가지 계층으로 나뉩니다.

콜리전 프리셋

가장 쉽고 빠르게 콜리전 특성을 설정하는 방법입니다.

언리얼 엔진은 자주 사용되는 콜리전 조합을 미리 정의해둔 프리셋을 제공합니다.

컴포넌트 선택: 콜리전을 설정할 Primitive Component (예: Static Mesh Component, Capsule Component, Box Component 등)를 선택합니다.

디테일(Details) 패널 > 콜리전(Collision) 섹션:

  • Collision Presets: 드롭다운 메뉴를 클릭합니다.
  • 주요 프리셋
    • No Collision: 어떤 충돌도 감지하지 않습니다. 유령처럼 모든 것을 통과합니다.
    • OverlapAll: 기본 채널들에 Overlap 응답을 설정합니다. 실제 이벤트에는 상대 응답, Query 활성화, 양쪽의 Generate Overlap Events도 필요합니다.
    • BlockAll: 기본 채널들에 Block 응답을 설정합니다. 상대도 해당 Object Type을 막아야 하며, 이 프리셋만으로 Simulate Physics가 켜지는 것은 아닙니다.
    • PhysicsActor: 물리 오브젝트용 충돌 프리셋입니다. 실제 시뮬레이션과 중력은 별도 설정합니다.
    • Pawn / CharacterMesh / Vehicle 등: 캐릭터나 차량 등 특정 종류의 오브젝트에 대한 표준 설정입니다.
  • 활용: 대부분의 경우, 이 프리셋들을 활용하여 빠르게 콜리전 설정을 할 수 있습니다.

콜리전 채널 및 응답

프리셋만으로는 부족할 때, 각 오브젝트가 어떤 종류의 오브젝트와 상호작용할지 세밀하게 제어할 수 있습니다.

Collision Presets > Custom... 선택: Custom 옵션을 선택하면 상세한 콜리전 설정을 직접 할 수 있습니다.

Object Type: 해당 컴포넌트가 어떤 종류의 오브젝트인지를 정의합니다.

  • 기본 제공: WorldStatic (움직이지 않는 월드), WorldDynamic (움직이는 월드 오브젝트), Pawn, PhysicsBody, Vehicle, Destructible 등.
  • 사용자 정의 채널 추가: 편집(Edit) > 프로젝트 세팅(Project Settings) > 엔진(Engine) > 콜리전(Collision)으로 이동하여 New Object Channel을 추가할 수 있습니다. (예: Projectile, Explosion, Collectible)
    • Default Response를 설정하여 해당 채널이 기본적으로 어떻게 반응할지 정합니다.

Trace Responses: 이 컴포넌트가 Trace (라인 트레이스, 박스 트레이스 등)에 어떻게 반응할지 정의합니다.

  • Ignore (무시), Overlap (겹침 감지), Block (막힘 감지)

Object Responses: 다른 Object Type들과 어떻게 상호작용할지 정의합니다.

  • 각 Object Type에 대해 Ignore, Overlap, Block 중 하나를 선택합니다.
  • 예시
    • 플레이어끼리 통과하지 못하게 하려면 양쪽의 Pawn 응답을 Block으로 설정합니다. 통과하도록 설계할 수도 있습니다.
    • 총알은 Projectile 채널이며, WorldStatic은 Block하고, Pawn은 Overlap하여 데미지를 주되 통과할 수 있도록 설정할 수 있습니다.
    • 아이템은 Collectible 채널이며, Pawn에 Overlap하여 획득 이벤트를 발생시킵니다.
두 컴포넌트의 응답 조합

두 컴포넌트의 응답 조합

두 컴포넌트의 응답 조합
응답 조합상호작용이벤트 조건
한쪽이 Ignore상대가 Block/Overlap이어도 상호작용을 무시합니다.이 조합으로 Overlap 이벤트가 발생하지 않습니다.
양쪽이 Block서로 막습니다.물리 충돌 알림은 Simulation Generates Hit Events를 확인합니다. Sweep Hit는 별도 이동 경로입니다.
Ignore 없이 Overlap 포함한쪽이 Block이어도 막지 않고 겹칩니다.Query를 허용하고 양쪽 Generate Overlap Events를 켭니다.
응답 조합: 한쪽이 Ignore
상호작용: 상대가 Block/Overlap이어도 상호작용을 무시합니다.
이벤트 조건: 이 조합으로 Overlap 이벤트가 발생하지 않습니다.
응답 조합: 양쪽이 Block
상호작용: 서로 막습니다.
이벤트 조건: 물리 충돌 알림은 Simulation Generates Hit Events를 확인합니다. Sweep Hit는 별도 이동 경로입니다.
응답 조합: Ignore 없이 Overlap 포함
상호작용: 한쪽이 Block이어도 막지 않고 겹칩니다.
이벤트 조건: Query를 허용하고 양쪽 Generate Overlap Events를 켭니다.

콜리전 메시 타입

스태틱 메시의 경우, Static Mesh Editor에서 콜리전 메시의 형태를 설정할 수 있습니다.

이는 시각적 메시의 복잡도와 물리 시뮬레이션의 정확도, 성능에 영향을 미칩니다.

스태틱 메시 에셋 더블클릭: 콘텐츠 브라우저에서 스태틱 메시 에셋을 더블클릭하여 스태틱 메시 에디터를 엽니다.

콜리전(Collision) 메뉴
  • Add Box/Sphere/Capsule Simplified Collision: 가장 간단한 형태의 기본 도형 콜리전을 추가합니다. 성능에 가장 좋습니다.
  • Add K-DOP X/Y/Z Simplified Collision: 여러 개의 경사면을 가진 단순화된 콜리전을 생성합니다. (더 정확하지만 여전히 최적화됨)
  • Auto Convex Collision: 메시의 형태를 따라가는 볼록 콜리전을 자동으로 생성합니다. (분해 설정에 따라 근사 정확도와 비용이 달라짐)
  • Use Complex Collision As Simple: 단순 충돌 요청에도 삼각형 메시를 사용합니다. 이 설정의 오브젝트 자신은 물리 시뮬레이션할 수 없지만, 시뮬레이션 중인 다른 단순 바디와 충돌할 수는 있습니다. 픽셀 단위 판정과 같지 않으며, 움직이는 물리 바디에는 적절한 단순/볼록 충돌을 구성합니다.
    • Details의 Collision Complexity에서 선택합니다. 복잡 쿼리만 필요하다면 기본 단순/복잡 형상을 유지하고 Trace Complex로 선택하는 방법도 있습니다.

Collision > Show Simple Collision: 체크하여 현재 설정된 콜리전 메시를 시각적으로 확인합니다.


콜리전 이벤트 처리

콜리전이 감지되면 언리얼 엔진은 특정 이벤트를 발생시켜 블루프린트에서 로직을 구현할 수 있도록 합니다.

On Hit 이벤트 (Block 응답 시)

오브젝트가 다른 오브젝트에 Block 으로 응답하는 콜리전이 발생했을 때 트리거됩니다.

주로 물리적 충돌과 관련된 로직에 사용됩니다.

  • 설정: 물리 시뮬레이션 충돌 알림은 Simulation Generates Hit Events와 Blocking 응답을 확인합니다. 이동 Sweep에서 생기는 Hit는 물리 시뮬레이션 알림과 경로가 다릅니다.

  • 이벤트 그래프: 컴포넌트를 선택한 상태에서 디테일 패널 하단의 이벤트(Events) 섹션에서 On Component Hit이벤트 옆의 + 버튼을 클릭합니다.

  • 주요 핀
    • Other Comp: 충돌한 상대 컴포넌트
    • Normal Impulse: 물리 충돌의 충격량입니다. Sweep의 Blocking Hit에서는 0일 수 있습니다.
    • Hit: 구조체를 Break Hit Result로 풀어 Impact Point와 Impact Normal 등 접촉 정보를 읽습니다.
  • 활용 예시
    • 총알이 벽에 맞으면 파편 이펙트와 사운드 재생.
    • 캐릭터가 낙하 후 땅에 부딪혔을 때 착지 애니메이션 재생.
    • 파괴 가능한 오브젝트가 충분한 힘으로 충돌했을 때 파괴.

On Overlap 이벤트 (Overlap 응답 시)

오브젝트가 다른 오브젝트에 Overlap 으로 응답하는 콜리전이 발생했을 때 트리거됩니다.

주로 트리거 영역, 아이템 줍기 등 물리적 충돌 없이 상호작용만 필요한 경우에 사용됩니다.

  • 설정: 양쪽 컴포넌트의 Query와 Generate Overlap Events를 켭니다. 원하는 상대 Object Type에 Overlap 응답을 설정하되, 한쪽이 Ignore하면 이벤트가 나지 않습니다.

  • 이벤트 그래프: 컴포넌트를 선택한 상태에서 디테일 패널 하단의 이벤트 섹션에서 On Component Begin Overlap (겹치기 시작할 때)와 On Component End Overlap (겹치기 끝날 때) 이벤트 옆의 + 버튼을 클릭합니다.

  • 주요 핀
    • Other Actor: 겹친 상대 액터
    • Other Comp: 겹친 상대 컴포넌트
  • 활용 예시
    • 플레이어가 체력 포션에 닿으면 획득하고 포션 액터 파괴.
    • 플레이어가 특정 영역에 진입하면 퀘스트 목표 업데이트.
    • AI가 경계 구역에 들어오면 경고 상태로 전환.

트레이스 (Trace): 콜리전 쿼리

Trace (라인 트레이스, 박스 트레이스, 스피어 트레이스 등)는 특정 지점에서 특정 방향으로 선이나 모양을 발사하여 중간에 콜리전이 있는지 검사하는 방법입니다.

물리 시뮬레이션 없이도 충돌 감지를 할 수 있어 매우 유용합니다.

  • Line Trace By Channel: 한 지점에서 다른 지점까지 선을 긋고, 지정한 Trace Channel을 막는 첫 번째 Blocking Hit를 찾습니다. (예: 총알의 명중 판정, 시야 검사)
  • Multi Line Trace By Channel: 처음 만나는 Blocking Hit까지의 Overlap 결과와 그 Blocking Hit를 반환합니다. 벽 뒤 모든 대상을 반환하지는 않습니다.
  • Box Trace By Channel / Sphere Trace By Channel / Capsule Trace By Channel: 선 대신 특정 모양을 사용하여 트레이스합니다. (예: 근접 공격의 범위 판정)
활용 예시
  • 총알 판정: 총구에서 발사된 라인 트레이스가 적 캐릭터를 Block하면 데미지를 적용.
  • 캐릭터 시야: AI의 눈에서 플레이어까지 라인 트레이스를 발사하여 시야가 가려지는지 확인.
  • 상호작용 검사: 플레이어의 전방에 라인 트레이스를 발사하여 상호작용 가능한 오브젝트(문, 스위치)를 감지.

디버깅 콜리전

  • 콜리전 시각화: 에디터의 Collision 보기나 실행 중 show collision으로 형상을 확인합니다. 선택한 오브젝트만 표시하는 명령으로 한정하지 않습니다.
  • 물리 백엔드: pxvis는 UE4/PhysX용입니다. UE5 Chaos는 Chaos Visual Debugger 등을 사용합니다. 에디터의 P로 표시하는 NavMesh는 콜리전 형상 자체가 아닙니다.
  • 트레이스 디버그 옵션: Line Trace 등의 노드에 Draw Debug Type 핀을 For Duration이나 For One Frame으로 설정하여 트레이스 라인을 시각적으로 확인합니다.

콜리전 시스템은 게임플레이의 상호작용을 구현하는 데 있어 가장 기본적인 도구입니다.

콜리전 프리셋, 채널, 응답, 그리고 이벤트 처리 방법을 정확히 이해하고 활용하는 것이 안정적이고 직관적인 게임플레이를 만드는 데 매우 중요합니다.


이번 절에서는 언리얼 엔진에서 오브젝트 간의 충돌을 정의하고 감지하는 콜리전 시스템의 설정 방법과 On Hit, On Overlap 이벤트를 통한 게임플레이 로직 연동, 그리고 Trace 기능을 활용한 충돌 쿼리에 대해 알아보았습니다.

콜리전은 물리 시뮬레이션과 더불어 게임의 상호작용을 구현하는 핵심 요소입니다.