언리얼엔진5 공부

[TIL] UE5 콜리젼 & 오버랩 초기화 순서에 따른 이슈

Client Side 2026. 2. 9. 15:51

1. 문제 상황 (The Problem)

  • 현상: 공격 애니메이션 시 노티파이를 통해 무기 콜리젼을 QueryOnly로 켰음에도 불구하고, 몬스터와의 오버랩(Overlap) 이벤트가 전혀 발생하지 않음.
  • 특이사항: 에디터에서 처음부터 콜리젼을 켜두면 잘 작동하지만, NoCollision으로 시작하면 코드로 켜도 반응이 없음.

2. 핵심 원인 분석 (Technical Insight)

언리얼 엔진의 물리 시스템은 성능 최적화를 위해 '규칙(Rule)'과 '상태(State)'를 엄격히 구분합니다.

  • 에디터 설정의 함정: 프리셋을 NoCollision으로 설정하면, 엔진은 "이 물체는 물리 연산이 필요 없다"고 판단하여 오버랩 감지를 위한 내부 데이터를 아예 로드하지 않거나 물리 업데이트 목록에서 제외합니다.
  • 런타임 제어의 한계: 게임 도중에 코드로 상태를 QueryOnly로 바꿔도, 이미 초기화 단계에서 '무시'된 데이터 구조가 즉시 갱신되지 않아 감지가 안 된 것입니다.

3. 최종 해결 방법 (The Solution)

작성하신 대로 다음의 단계를 거치는 것이 가장 표준적이고 안전한 방식입니다.

  1. 에디터 설정 (규칙 확립):
    • 콜리젼 프리셋을 Weapon으로 설정합니다. (Pawn 채널을 Overlap 하겠다는 규칙을 물리 엔진에 미리 등록)
    • Generate Overlap Events 체크박스를 반드시 켭니다.
  2. C++ 초기화 (상태 잠금):
    • BeginPlay에서 WeaponCollision->SetCollisionEnabled(ECollisionEnabled::NoCollision);을 호출합니다. (규칙은 유지하되 상태만 꺼둠)
  3. 애니메이션 노티파이 (실행):
    • 공격 순간에만 QueryOnly로 전환하여 판정을 시작합니다.