언리얼 충돌시스템

DevBison·2025년 8월 20일

언리얼 엔진 충돌 방식 정리

Block vs Overlap

  • Block 충돌: 두 액터가 서로 막히고 더 이상 겹칠 수 없음 (벽, 바닥, 장애물 같은 상황).
  • Overlap 충돌: 충돌 이벤트는 발생하지만 겹치는 것을 허용 (트리거, 센서, 함정 등에 사용).

채널과 프로파일

  • 채널(Channel): 충돌의 "분류 기준".

    • Object Type: 오브젝트 자체의 성격 (Player, WorldStatic 등).
    • Trace Type: 라인 트레이스, 스위프 같은 순간적인 충돌 체크용.
  • 프로파일(Profile): 여러 채널에 대한 충돌 반응(Block, Overlap, Ignore)을 미리 저장해둔 세트.

  • 즉, 프로파일이 채널을 포함한다.

  • 기본적으로 Object / Trace 타입이 있고, 프로젝트 세팅에서 최대 18개까지 커스텀 채널을 만들 수 있다.

트레이스 vs 오브젝트

  • Trace 채널: 실제 물체에 붙이는 게 아님. 라인트레이스/스위프 같은 순간적 충돌 체크에만 사용.
  • Object 채널: 실제 월드에 존재하는 메쉬, 액터 등에 적용.

콜리전 프리셋

  • 모든 메쉬는 기본적으로 콜리전 프리셋을 가진다.
  • 게임에서는 보통 커스텀 프리셋을 만들어서 사용.
  • 불필요한 충돌을 막으려면 NoCollision 설정.

SetCollisionEnabled 열거형

  • NoCollision: 충돌 없음.
  • QueryOnly: 위치 이동 중 충돌만 체크 (Overlap/Block 이벤트만).
  • PhysicsOnly: 물리 시뮬레이션 충돌만 반응.
  • QueryAndPhysics: 둘 다 반응.
  • ProbeOnly: 카메라 충돌 전용(디버깅 시 카메라 클리핑 방지용).

커스텀 채널 만들기


  • 새 충돌 채널 생성 가능 (예: Player, Item).
  • Ignore로 기본값을 두면 모든 오브젝트가 무시, 필요한 곳만 Overlap/Block으로 변경.

  • Config 폴더의 .ini 파일에 저장됨. 삭제 시 세팅이 날아가므로 주의.

커스텀 프로파일 만들기

  • 만든 채널을 기반으로 새로운 프로파일 생성.
  • 예: Player 프로파일 → SetCollisionProfileName("Player") 로 지정.


PlatformItem 액터 예제

  1. 클래스 생성

  2. 컴포넌트 스마트포인터 멤버 변수 선언

  3. 생성자 설정

    • 루트: BoxComponent
    • Mesh: 루트에 붙이기
  4. 매쉬 세팅

    • 피벗 센터 맞추고 경로 입력.
  5. 박스 콜리전 크기 지정

    • SetBoxExtent(FVector(50))
  6. 매쉬 콜리전은 비활성화


아이템 전용 채널

  • Player ↔ Item 은 Overlap만 허용.
  • Item ↔ World 는 Block 가능.

  • 카메라 충돌 시에는 Visibility를 Block으로 해줘야 어색하지 않음.

최종 적용

  • Item 액터의 콜리전 프로파일 이름을 "Item"으로 지정.

  • 결과적으로:

    • Player는 Item과 Overlap 이벤트 발생.
    • 카메라는 Item과 Block.
    • 다른 불필요한 충돌은 Ignore.

profile
응애 개발자

0개의 댓글