본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진의 라인 트레이스 (Line Trace) 에서 트레이스 채널은 어떤 것이 있으며, 어떻게 활용할 수 있나요?

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

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


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

언리얼 엔진의 라인 트레이스 (Line Trace) 에서 트레이스 채널은 어떤 것이 있으며, 어떻게 활용할 수 있는지 간략히 알아보았습니다.


질문 >

언리얼 엔진의 라인 트레이스 (Line Trace) 에서 트레이스 채널은 어떤 것이 있으며, 어떻게 활용할 수 있나요?

답변 >

트레이스 채널(Trace Channel)은 언리얼 엔진에서 라인 트레이스(Line Trace) 또는 다른 트레이스 유형(박스, 구, 캡슐 등)이 충돌할 수 있는 대상과 그 대상에 대한 충돌 반응을 정의하는 시스템입니다. 트레이스 채널은 충돌 감지 시 특정 오브젝트 타입을 필터링하거나 동작을 제어하는 데 사용됩니다.


주요 트레이스 채널

언리얼 엔진에서 제공하는 기본 트레이스 채널은 다음과 같습니다:

트레이스 채널  설명
ECC_Visibility 시각적 충돌 감지에 사용. 주로 Line Trace에서 오브젝트가 플레이어 시야에 있는지 확인.
ECC_Camera 카메라와 관련된 충돌 감지에 사용. 카메라 충돌 시 라인 트레이스로 장애물을 탐지.
ECC_PhysicsBody 물리 시뮬레이션이 활성화된 오브젝트와 충돌.
ECC_WorldStatic 고정된 월드 오브젝트(벽, 지형 등)와 충돌.
ECC_WorldDynamic 동적 월드 오브젝트(움직이는 플랫폼, NPC 등)와 충돌.
ECC_Pawn 캐릭터와 관련된 충돌 처리. 캐릭터와의 상호작용을 감지.
ECC_Destructible 파괴 가능한 오브젝트와 충돌.

트레이스 채널 활용 방법

1. 트레이스 채널 선택

트레이스 채널은 라인 트레이스를 호출할 때 설정됩니다. 주로 ECC_Visibility 또는 **ECC_PhysicsBody**와 같은 채널이 사용됩니다.

FHitResult HitResult;
FVector Start = GetActorLocation();
FVector End = Start + (GetActorForwardVector() * 1000.0f);

bool bHit = GetWorld()->LineTraceSingleByChannel(
    HitResult,
    Start,
    End,
    ECC_Visibility  // 트레이스 채널 설정
);


2. 오브젝트와의 충돌 반응 설정

각 오브젝트는 충돌 채널에 대해 Block, Overlap, Ignore 반응을 정의할 수 있습니다.

  1. Details 패널에서 설정:
    • 콘텐츠 브라우저에서 오브젝트(Static Mesh, Actor 등)를 선택.
    • Collision > Collision Presets에서 설정.
    • Custom... 옵션을 선택해 트레이스 채널별로 반응 설정.
  2. 코드에서 설정:
UPrimitiveComponent* Component = MyActor->FindComponentByClass<UPrimitiveComponent>();
if (Component)
{
    Component->SetCollisionResponseToChannel(ECC_Visibility, ECollisionResponse::ECR_Block);
}


3. 사용자 정의 트레이스 채널

사용자 정의 트레이스 채널을 만들어 특정 게임플레이 요구에 맞게 트레이스를 구성할 수 있습니다.

  1. 트레이스 채널 생성:
    • Edit > Project Settings > Collision으로 이동.
    • New Trace Channel을 클릭.
    • 이름, 기본 반응(Block, Overlap, Ignore)을 설정.
  2. 사용자 정의 채널 사용:
    • 생성한 채널은 코드와 블루프린트에서 사용 가능.
bool bHit = GetWorld()->LineTraceSingleByChannel(
    HitResult,
    Start,
    End,
    ECC_GameTraceChannel1  // 사용자 정의 채널
);


활용 예시

1. 시야 검사 (ECC_Visibility)

  • 캐릭터의 시야에서 장애물이 없는지 확인.
  • Line Trace를 사용해 카메라와 환경 간의 충돌을 감지.

2. 물리 오브젝트 상호작용 (ECC_PhysicsBody)

  • 특정 오브젝트를 클릭했을 때 물리적 동작 실행.
  • Line Trace를 통해 물리적으로 활성화된 오브젝트를 감지.

3. 환경 상호작용 (ECC_WorldStatic)

  • 문, 벽, 지형과의 충돌 검사.
  • 월드의 고정된 오브젝트와의 충돌을 기반으로 플레이어의 움직임 제어.

4. 캐릭터 충돌 감지 (ECC_Pawn)

  • NPC 또는 다른 캐릭터를 감지하여 공격 또는 대화 상호작용 구현.

장점과 단점

장점

  1. 필터링: 트레이스 채널을 사용하면 필요하지 않은 오브젝트를 필터링하여 충돌 검사 성능 향상.
  2. 유연성: 각 채널에 대해 다른 반응(Block, Overlap, Ignore)을 설정 가능.
  3. 사용자 정의: 게임플레이 요구에 따라 새로운 트레이스 채널 생성 가능.

단점

  1. 복잡한 설정: 많은 오브젝트와 채널을 관리하려면 세밀한 충돌 설정이 필요.
  2. 성능 비용: 트레이스가 많아질수록 성능에 부정적인 영향을 줄 수 있음.

결론

트레이스 채널은 언리얼 엔진의 충돌 시스템에서 중요한 구성 요소로, 충돌 검사를 효율적으로 처리하고 특정 오브젝트와의 상호작용을 제어할 수 있습니다. 다양한 채널을 적절히 활용하고, 필요에 따라 사용자 정의 채널을 생성하면, 게임의 상호작용을 더욱 풍부하게 설계할 수 있습니다.


🎬 유튜브 채널 🎬

 

위로그@WiLog

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

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

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

chzzk.naver.com


반응형