반응형
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
언리얼 엔진 에서 ECollisionChannel 는 무엇인지 간략히 알아보았습니다.
질문 >
언리얼 엔진 에서 ECollisionChannel 는 무엇인가요?
답변 >
ECollisionChannel는 언리얼 엔진에서 충돌 채널(Collision Channel)을 정의하는 열거형(Enum)으로, 충돌 및 트레이스 시스템에서 오브젝트 간의 충돌 유형을 구분하는 데 사용됩니다. 이는 Collision Query(충돌 감지)와 Trace Queries(트레이스 검사)에서 특정 대상과의 충돌 동작을 설정하고 필터링할 수 있도록 합니다.
ECollisionChannel의 역할
- 충돌 채널 분류:
- 게임 내 오브젝트들이 어떤 방식으로 충돌하거나 상호작용할지를 채널별로 정의합니다.
- 예: 캐릭터와 벽은 충돌하지만, 캐릭터와 장식용 오브젝트는 충돌하지 않도록 설정.
- 충돌 필터링:
- 특정 채널만 충돌을 감지하도록 설정하거나 무시(Ignore)할 수 있습니다.
- Line Trace, Sphere Trace 등과 같은 충돌 검사에서 주로 사용.
- 충돌 반응 설정:
- 각 채널에 대해 Block(막음), Overlap(겹침), Ignore(무시) 반응을 설정하여 오브젝트 간 충돌 동작을 제어합니다.
기본 ECollisionChannel 값
언리얼 엔진에서 제공하는 기본 ECollisionChannel 값은 다음과 같습니다:
ECollisionChannel 값 | 설명 |
ECC_WorldStatic | 고정된 월드 오브젝트(벽, 지형 등)와의 충돌 처리. |
ECC_WorldDynamic | 움직이는 월드 오브젝트(문, 엘리베이터 등)와의 충돌 처리. |
ECC_Pawn | 캐릭터와의 충돌 처리. |
ECC_PhysicsBody | 물리 시뮬레이션이 활성화된 오브젝트와의 충돌 처리. |
ECC_Vehicle | 차량과의 충돌 처리. |
ECC_Destructible | 파괴 가능한 오브젝트와의 충돌 처리. |
ECC_Visibility | 시각적 충돌(주로 Line Trace에 사용). |
ECC_Camera | 카메라와의 충돌 처리. |
ECC_GameTraceChannel1~18 | 사용자 정의 채널을 위한 공간. |
ECollisionChannel 활용 방법
1. 충돌 설정
오브젝트는 특정 채널에 대해 Block, Overlap, Ignore 중 하나의 반응을 가질 수 있습니다.
- Block: 충돌을 발생시키며 이동을 차단.
- Overlap: 충돌을 발생시키지 않지만 이벤트를 트리거.
- Ignore: 해당 채널의 충돌을 무시.
UPrimitiveComponent* Component = MyActor->FindComponentByClass<UPrimitiveComponent>();
if (Component)
{
Component->SetCollisionResponseToChannel(ECC_Visibility, ECollisionResponse::ECR_Block);
}
2. 트레이스 시스템에서 사용
트레이스 함수에서 충돌 채널을 설정하여 해당 채널에 속하는 오브젝트만 충돌 검사.
FHitResult HitResult;
bool bHit = GetWorld()->LineTraceSingleByChannel(
HitResult,
StartLocation,
EndLocation,
ECC_Visibility // Line Trace는 Visibility 채널만 검사
);
3. 사용자 정의 채널
프로젝트에서 고유한 요구 사항에 맞는 충돌 채널을 정의할 수 있습니다.
- Project Settings > Collision으로 이동.
- New Trace Channel을 클릭하여 새 채널 생성.
- 이름 및 기본 반응(Block, Overlap, Ignore) 설정.
ECollisionChannel의 활용 예시
1. 환경 상호작용
- 캐릭터가 문을 열거나 버튼을 누를 때 특정 채널(ECC_WorldDynamic)을 기반으로 충돌 이벤트 처리.
2. 시야 검사
- Line Trace를 사용하여 플레이어가 장애물 없이 목표를 볼 수 있는지 확인(ECC_Visibility 사용).
3. 물리 기반 상호작용
- 물리 오브젝트를 잡거나 밀 때 ECC_PhysicsBody 채널을 사용해 충돌 감지.
4. 카메라 충돌
- ECC_Camera 채널을 통해 카메라가 벽에 막히지 않도록 충돌 지점 감지 후 위치 조정.
장점과 단점
장점
- 유연성: 다양한 충돌 채널을 통해 복잡한 상호작용 설정 가능.
- 최적화: 필요하지 않은 채널을 무시하여 충돌 검사 비용 감소.
- 사용자 정의 가능: 고유한 채널을 생성해 특정 요구사항 처리.
단점
- 복잡성 증가: 많은 채널을 관리해야 하는 대규모 프로젝트에서는 설정이 복잡해질 수 있음.
- 충돌 문제 디버깅: 잘못된 충돌 반응 설정으로 인해 예기치 않은 동작 발생 가능.
결론
ECollisionChannel은 언리얼 엔진의 충돌 시스템에서 중요한 구성 요소로, 오브젝트 간 충돌 및 트레이스 동작을 효율적으로 제어할 수 있게 합니다. 기본 제공되는 채널 외에도 사용자 정의 채널을 생성하여 게임의 요구사항에 맞는 충돌 동작을 설계할 수 있습니다. 이를 적절히 활용하면 게임의 상호작용을 더욱 정교하게 구현할 수 있습니다.
🎬 유튜브 채널 🎬
🎬 치지직 채널 🎬
반응형