언리얼 엔진에서 콜리전이란 월드 위에 있는 특정 속성을 갖는 액터 사이에서 충돌 또는 오버랩을 감지하기 위한 시스템이다.

콜리전은 UPrimitiveComponent를 베이스로 하는 컴포넌트 클래스에서만 작동한다.

<aside> 💡 다음은 UPrimitiveComponent의 주석 설명이다. 프리미티브 컴포넌트는 일반적으로 렌더링하거나 콜리전 데이터로 사용하기 위해 일종의 지오메트리를 포함하거나 생성하는 씬 컴포넌트입니다.

프로젝트 세팅→콜리전 섹션에서 콜리전 채널을 생성, 편집, 삭제할 수 있다.

BaseEngine.ini 파일에서 기본 언리얼 엔진 콜리전 채널이 정의되어 있고, DefaultEngine.ini에서는 기본 언리얼 엔진 콜리전 채널과 커스텀 콜리전 채널이 정의되어 BaseEngine.ini 파일을 오버라이딩 한다.

콜리전 채널은 크게 두 개의 타입으로 나뉜다.

두 타입의 차이점은 간단히 Object Channel은 객체의 분류를 나타내고 충돌 처리를 정의하는데 사용되며, Trace Channel은 트레이싱 작업에서 어떤 종류의 충돌을 검사할지를 지정하는데 사용된다.

특이사항

  1. Collision Channel 이름에 ‘/’가 들어가면 cpp 프로젝트 디버그할 때 break되는 버그가 있음
  2. GetWorld()→LineTraceMultiByChannel 에서 여러개의 HitResults를 반환하는데, 이때 TraceType을 block 하는 첫 액터를 반환한다. TraceType을 Overlap하는 모든 액터를 구하고 싶을 경우 문제는 block된 것이 없다면 LineTraceMultiByChannel 함수의 반환값이 false라는 것이다.