본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진 에서 ECollisionChannel 는 무엇인가요?

by 밝음의기둥 2024. 12. 11.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진 에서 ECollisionChannel 는 무엇인지 간략히 알아보았습니다.


질문 >

언리얼 엔진 에서 ECollisionChannel 는 무엇인가요?

답변 >

ECollisionChannel는 언리얼 엔진에서 충돌 채널(Collision Channel)을 정의하는 열거형(Enum)으로, 충돌 및 트레이스 시스템에서 오브젝트 간의 충돌 유형을 구분하는 데 사용됩니다. 이는 Collision Query(충돌 감지)와 Trace Queries(트레이스 검사)에서 특정 대상과의 충돌 동작을 설정하고 필터링할 수 있도록 합니다.


ECollisionChannel의 역할

  1. 충돌 채널 분류:
    • 게임 내 오브젝트들이 어떤 방식으로 충돌하거나 상호작용할지를 채널별로 정의합니다.
    • 예: 캐릭터와 벽은 충돌하지만, 캐릭터와 장식용 오브젝트는 충돌하지 않도록 설정.
  2. 충돌 필터링:
    • 특정 채널만 충돌을 감지하도록 설정하거나 무시(Ignore)할 수 있습니다.
    • Line Trace, Sphere Trace 등과 같은 충돌 검사에서 주로 사용.
  3. 충돌 반응 설정:
    • 각 채널에 대해 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. 사용자 정의 채널

프로젝트에서 고유한 요구 사항에 맞는 충돌 채널을 정의할 수 있습니다.

  1. Project Settings > Collision으로 이동.
  2. New Trace Channel을 클릭하여 새 채널 생성.
  3. 이름 및 기본 반응(Block, Overlap, Ignore) 설정.

ECollisionChannel의 활용 예시

1. 환경 상호작용

  • 캐릭터가 문을 열거나 버튼을 누를 때 특정 채널(ECC_WorldDynamic)을 기반으로 충돌 이벤트 처리.

2. 시야 검사

  • Line Trace를 사용하여 플레이어가 장애물 없이 목표를 볼 수 있는지 확인(ECC_Visibility 사용).

3. 물리 기반 상호작용

  • 물리 오브젝트를 잡거나 밀 때 ECC_PhysicsBody 채널을 사용해 충돌 감지.

4. 카메라 충돌

  • ECC_Camera 채널을 통해 카메라가 벽에 막히지 않도록 충돌 지점 감지 후 위치 조정.

장점과 단점

장점

  1. 유연성: 다양한 충돌 채널을 통해 복잡한 상호작용 설정 가능.
  2. 최적화: 필요하지 않은 채널을 무시하여 충돌 검사 비용 감소.
  3. 사용자 정의 가능: 고유한 채널을 생성해 특정 요구사항 처리.

단점

  1. 복잡성 증가: 많은 채널을 관리해야 하는 대규모 프로젝트에서는 설정이 복잡해질 수 있음.
  2. 충돌 문제 디버깅: 잘못된 충돌 반응 설정으로 인해 예기치 않은 동작 발생 가능.

결론

ECollisionChannel은 언리얼 엔진의 충돌 시스템에서 중요한 구성 요소로, 오브젝트 간 충돌 및 트레이스 동작을 효율적으로 제어할 수 있게 합니다. 기본 제공되는 채널 외에도 사용자 정의 채널을 생성하여 게임의 요구사항에 맞는 충돌 동작을 설계할 수 있습니다. 이를 적절히 활용하면 게임의 상호작용을 더욱 정교하게 구현할 수 있습니다.


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형