본문으로 건너뛰기

안동민 개발노트

본문 시작

콜리전 시스템 기본 개념

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

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

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

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

콜리전 이벤트는 겹침 조건과 응답 설정이 동시에 맞아야 발생한다

충돌이 안 날 때는 노드보다 먼저 component collision, channel response, generate overlap/event 옵션을 확인한다.

질문판정
Collision Enabled가 켜져 있나?No Collision이면 어떤 이벤트도 오지 않음
Object/Trace Channel이 맞나?서로의 channel response가 Overlap/Block인지 확인
Generate Event가 켜져 있나?Overlap 또는 Hit 이벤트 생성 옵션 확인
컴포넌트가 움직이나?정적 배치만으로는 기대 이벤트가 안 올 수 있음
신호해석
Overlap겹침 감지, 통과 가능
Block막힘과 Hit 이벤트
Ignore서로 감지하지 않음

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

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

실제 메시(Static/Skeletal Mesh)는 물리 계산에 너무 복잡하기 때문에, 언리얼은 단순화된 콜리전 메시(Collision Mesh)를 사용합니다.

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

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

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

Preset, Object Type, Response가 콜리전 판정을 세 단계로 만든다

프리셋은 기본 묶음이고, Object Type은 내가 누구인지, Response는 상대를 어떻게 볼지 정한다.

  1. Preset
    Preset 설정 묶음 BlockAll

    OverlapAll 같은 시작점

  2. Object Type
    Object Type 내 채널 Pawn

    WorldDynamic 등 자기 정체성

  3. Response
    Response 상대 채널별 반응 Block

    / Overlap / Ignore

  4. Event
    Event 결

    신호 Hit 또는 Overlap 이벤트 발생 조건

상황판단
안 되는 경우내 설정과 상대 설정을 양쪽에서 모두 확인
디버깅Collision view와 Print String으로 이벤트 도달 확인
판단프리셋 이름보다 실제 response matrix를 본다

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

콜리전 프리셋

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

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

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

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

  • Collision Presets: 드롭다운 메뉴를 클릭합니다.
  • 주요 프리셋
    • No Collision: 어떤 충돌도 감지하지 않습니다. 유령처럼 모든 것을 통과합니다.
    • OverlapAll: 모든 것을 통과하지만, 모든 것에 대한 오버랩 이벤트를 발생시킵니다. (트리거 볼륨)
    • BlockAll: 모든 것을 막고, 충돌 시 물리적 반응을 일으킵니다.
    • 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 채널이며, WorldStaticBlock하고, PawnOverlap하여 데미지를 주되 통과할 수 있도록 설정할 수 있습니다.
    • 아이템은 Collectible 채널이며, PawnOverlap하여 획득 이벤트를 발생시킵니다.

콜리전 메시 타입

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

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

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

콜리전(Collision) 메뉴
  • Add Box/Sphere/Capsule Simplified Collision: 가장 간단한 형태의 기본 도형 콜리전을 추가합니다. 성능에 가장 좋습니다.
  • Add K-DOP X/Y/Z Simplified Collision: 여러 개의 경사면을 가진 단순화된 콜리전을 생성합니다. (더 정확하지만 여전히 최적화됨)
  • Auto Convex Collision: 메시의 형태를 따라가는 볼록 콜리전을 자동으로 생성합니다. (가장 정확하지만 성능 부하가 있을 수 있음)
  • Complex Collision as Simple: 실제 스태틱 메시의 모든 삼각형을 콜리전으로 사용합니다. 가장 정확하지만 성능에 가장 큰 부하를 줍니다. 물리 시뮬레이션에는 거의 사용되지 않고, Trace (특히 정확한 픽셀 단위 트레이스)에 주로 사용됩니다.
    • 콜리전 복잡도(Collision Complexity) 드롭다운에서 Use Complex as Simple을 선택합니다.

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


콜리전 이벤트 처리

콜리전 이벤트 판정 흐름

Hit과 Overlap은 응답 설정, 시뮬레이션 여부, 이벤트 생성 옵션이 함께 맞아야 발생합니다.

  1. 1
    채널 선택

    Object Channel과 Trace Channel 중 무엇으로 판정할지 정합니다. Channel

  2. 2
    응답 설정

    상대 채널에 Block, Overlap, Ignore 중 의도한 응답을 지정합니다. Response

  3. 3
    이벤트 옵션

    Simulation Generates Hit Events 또는 Generate Overlap Events를 켭니다. Event flag

  4. 4
    분기 처리

    Other Actor, Hit Result, Sweep Result를 읽어 게임 로직으로 연결합니다. Logic

  5. 5
    양쪽 설정

    한쪽만 Overlap이어도 상대가 Ignore이면 이벤트가 발생하지 않습니다.

  6. 6
    루트 컴포넌트

    실제로 움직이는 컴포넌트가 충돌을 담당하는지 확인합니다.

  7. 7
    중복 이벤트

    Begin/End Overlap이 여러 컴포넌트에서 중복 호출되지 않게 필터링합니다.

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

On Hit 이벤트 (Block 응답 시)

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

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

  • 설정: 컴포넌트를 선택하고 디테일(Details) 패널의 콜리전(Collision) 섹션에서 Generate Hit Events를 체크합니다.

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

  • 주요 핀
    • Other Comp: 충돌한 상대 컴포넌트
    • Normal Impulse: 충돌 지점에서 가해진 충격량 벡터 (물리적 반응 계산에 유용)
    • Hit Location: 충돌이 발생한 월드 위치
    • Hit Normal: 충돌 지점의 표면 법선 벡터
  • 활용 예시
    • 총알이 벽에 맞으면 파편 이펙트와 사운드 재생.
    • 캐릭터가 낙하 후 땅에 부딪혔을 때 착지 애니메이션 재생.
    • 파괴 가능한 오브젝트가 충분한 힘으로 충돌했을 때 파괴.

On Overlap 이벤트 (Overlap 응답 시)

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

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

  • 설정: 컴포넌트를 선택하고 디테일 패널의 콜리전 섹션에서 Collision PresetsOverlapAll 등으로 설정하거나, Custom 설정에서 원하는 Object TypeOverlap 응답을 설정합니다.

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

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

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

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

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

  • Line Trace By Channel: 한 지점에서 다른 지점까지 선을 긋고, 중간에 특정 콜리전 채널에 Block 또는 Overlap하는 오브젝트가 있는지 확인합니다. (예: 총알의 명중 판정, 시야 검사)
  • Multi Line Trace By Channel: 여러 개의 히트 결과를 반환합니다.
  • Box Trace By Channel / Sphere Trace By Channel / Capsule Trace By Channel: 선 대신 특정 모양을 사용하여 트레이스합니다. (예: 근접 공격의 범위 판정)
활용 예시
  • 총알 판정: 총구에서 발사된 라인 트레이스가 적 캐릭터를 Block하면 데미지를 적용.
  • 캐릭터 시야: AI의 눈에서 플레이어까지 라인 트레이스를 발사하여 시야가 가려지는지 확인.
  • 상호작용 검사: 플레이어의 전방에 라인 트레이스를 발사하여 상호작용 가능한 오브젝트(문, 스위치)를 감지.

아래 다이어그램은 같은 충돌 문제라도 물리 반응, 트리거, 쿼리 중 어디에 가까운지에 따라 선택해야 할 도구가 달라진다는 점을 정리합니다.

콜리전 설정 분류

같은 접촉처럼 보여도 목적에 따라 Block, Overlap, Trace 중 선택해야 하는 도구가 달라집니다.

  1. 막힘과 물리 반응이 필요할 때

    Block 1 벽, 바닥, 투사체 명중처럼 이동을 멈춰야 합니다. 2 Generate Hit Events와 물리 시뮬레이션 상태를 확인합니다.

  2. 통과하되 이벤트만 필요할 때

    Overlap 1 아이템 획득, 트리거 볼륨, 경계 진입에 적합합니다. 2 양쪽 컴포넌트의 Generate Overlap Events를 맞춥니다.

  3. 즉시 검사하고 결과만 쓸 때

    Trace 1 시야, 조준, 상호작용 대상 찾기처럼 쿼리에 가깝습니다. 2 Trace Channel과 복잡도 설정이 결과 정확도를 좌우합니다.


디버깅 콜리전

  • P: 게임 플레이 중 내비메시를 토글하지만, 간혹 콜리전 문제와 헷갈릴 수 있습니다.
  • ~ (콘솔) > pxvis collision: 실행 중인 게임에서 모든 콜리전 메시를 시각적으로 표시합니다.
  • ~ (콘솔) > show collision: 에디터 뷰포트에서 선택된 오브젝트의 콜리전 메시를 표시합니다.
  • 트레이스 디버그 옵션: Line Trace 등의 노드에 Draw Debug Type 핀을 For Duration이나 For One Frame으로 설정하여 트레이스 라인을 시각적으로 확인합니다.
이벤트가 안 뜨면 양쪽 컴포넌트 조건 검토

On Hit와 On Overlap은 이벤트 노드만 추가한다고 발생하지 않습니다. 두 컴포넌트의 응답과 이벤트 생성 옵션이 맞아야 합니다.

  1. Block 응답과 Hit 이벤트 생성이 필요하다

    On Component Hit Block 두 객체 중 최소 한쪽 이동이 다른 쪽을 막는 응답이어야 합니다. Hit Generate Hit Events가 필요한 컴포넌트에 켜져 있어야 합니다. Phys 물리 충돌이면 Simulate Physics와 콜리전 프리셋도 함께 봅니다.

  2. Overlap 응답과 양쪽 생성 옵션이 중요하다

    Begin Overlap Overlap 대상 채널 응답이 Ignore나 Block이 아니라 Overlap이어야 합니다. Both 겹치는 두 컴포넌트 모두 Generate Overlap Events를 확인합니다. Shape 콜리전 형태가 너무 작거나 비어 있으면 겹침 자체가 생기지 않습니다.

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

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

아래 정리표는 충돌 문제를 만났을 때 프리셋, 채널, 이벤트, 트레이스 중 어디부터 확인할지 빠르게 좁히는 기준입니다.

충돌 처리 분류 기준

콜리전 문제는 프리셋을 바꾸기 전에 원하는 결과가 물리 반응인지, 트리거 이벤트인지, Trace 조회인지 분류하면 훨씬 빨리 좁혀집니다.

  1. Preset
    프리셋 확인

    Preset BlockAll, OverlapAll, Custom 중 현재 의도와 가까운 출발점을 고릅니다.

  2. Channel
    채널 비교

    Channel Object Type과 Trace Channel이 서로 다른 표라는 점을 분리합니다.

  3. Debug
    표시 켜기

    Debug show collision과 Draw Debug Type으로 실제 충돌 형상을 확인합니다.


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

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

Collision Preset 판정 흐름

콜리전 문제는 프리셋, 채널 응답, 이벤트 생성 조건을 분리해 보면 대부분 빠르게 좁혀집니다.

  1. Preset

    기본 응답 묶음이 상황에 맞는지 고른다.

  2. Channel

    마주치는 두 오브젝트 타입의 응답을 맞춘다.

  3. Event

    Hit 또는 Overlap 이벤트 생성 조건을 확인한다.

  4. Debug

    Collision View와 로그로 실제 판정을 검증한다.

  5. 프리셋 기준

    프리셋 BlockAll 대신 필요한 오브젝트 타입만 응답하는 Custom 설정을 우선 검토합니다.

  6. 응답 기준

    응답 서로 만나는 두 객체가 Block, Overlap, Ignore 중 같은 의도로 맞물리는지 봅니다.

  7. 이벤트 기준

    벤트 On Hit은 Block과 Hit Event, On Overlap은 Overlap Event 조건을 함께 확인합니다.