[Unreal] 언리얼 콜리전(충돌), 트레이스(추적) 유형
언리얼의 콜리전은 오브젝트 타입과 트레이스 타입으로 나뉘고 각 사항에 대해 트레이스 처리를 할 수 있다. c++ 과 BP에 대응하는 함수는 아래와 같다. 여기서는 LineTrace만을 예로들었으나 구체, 박스, 캡슐등의 트래이스 모양및 다중트래이스 처리도 할수 있으니 필요하면 찾아서 쓰자(사용법은 같다. 반환되는값의 차이.)
(ECollisionChannel? EObjectTypeQuery?? ETraceTypeQuery??? )
1. 언리얼의 기본및 사용자정의 오브잭트채널, 트레이스채널은 모두 ECollisionChannel한군데에 세팅되고 트래이스에는 이값들이 사용된다.
2. EObjectTypeQuery, ETraceTypeQuery 는 ECollisionChannel에 세팅되어 있는 값을 찾아오기위한 값들이라 생각하면 쉽다.
3. 각 Enum이 어떻게 매칭되는지에 대해 정리하자면 ECollisionChannel의 기본 채널을 재외한 사용자 생성 채널은 ECC_GameTraceChannel1 부터 생성한 순서대로 지정된다. 지정된 값은 [프로젝트폴더]/config/DefaultEngine.ini에 세팅.
EObjectTypeQuery와 ETraceTypeQuery는 각각 엔진-사용자오브젝트의 순서대로 ObjectTypeQuery1 TraceTypeQuery1 부터 순서대로 매칭된다.
추가적으로 UEngineTypes::ConvertToCollisionChannel 함수로 EObjectTypeQuery와 ETraceTypeQuery를 실제 사용되는 ECollisionChannel 값으로 가져올수 있다.
+ 추측하기 보단 UEngineTypes 클래스 내에 ConvertToObjectType 함수를 사용하자.
TArray<TEnumAsByte<EObjectTypeQuery>> arrObjectTypeQuery;
arrObjectTypeQuery.Add(UEngineTypes::ConvertToObjectType(ECollisionChannel::ECC_Vehicle));
arrObjectTypeQuery.Add(UEngineTypes::ConvertToObjectType(ECollisionChannel::ECC_PhysicsBody));
https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/Engine/UEngineTypes/