[UE5] Draw Debug Line

ChangJin·2023년 9월 14일
0

Unreal Engine5

목록 보기
9/114
post-thumbnail

SweepMultiByChannel 함수와 관련된 내용을 예제 코드와 함께 설명하겠습니다. 이 예제는 SweepMultiByChannel을 사용하여 충돌을 감지하고, 시작점과 끝점을 설정하고, 디버그 라인을 그려서 결과를 시각적으로 확인하는 방법을 포함합니다.

  • 시작점은 GetComponentLocation로 가져옵니다
    - 이 함수는 USceneComponent 클래스에서 상속된 함수로, 해당 컴포넌트의 위치를 월드 좌표계에서 반환합니다. 즉, 해당 컴포넌트가 월드 공간에서 어디에 위치하는지를 알려줍니다.
// USceneComponent를 상속받은 컴포넌트의 위치를 얻어옴
FVector ComponentLocation = MySceneComponent->GetComponentLocation();

// 위치 정보를 출력
UE_LOG(LogTemp, Warning, TEXT("Component Location: %s"), *ComponentLocation.ToString());
  • 초록색 벡터는 GetForwardVector로 가져올 수 있습니다.
    - 이 함수는 USceneComponent 클래스에서 상속된 함수로, 해당 컴포넌트의 월드 공간에서의 전방(X 축 방향) 단위 방향 벡터를 반환합니다. 즉, 해당 컴포넌트가 향하는 방향의 단위 벡터를 제공합니다.
// USceneComponent를 상속받은 컴포넌트의 전방(X) 방향 벡터를 얻어옴
FVector ForwardVector = MySceneComponent->GetForwardVector();

// 방향 벡터 정보를 출력
UE_LOG(LogTemp, Warning, TEXT("Forward Vector: %s"), *ForwardVector.ToString());

SweepMultiByChannel (채널별 다중 스위핑)

  • 예상한 결과값을 돌려받지 못하면 이런 궁금증이 생깁니다.
  • 애초에 올바른 질문을 한건가? 함수를 확인해봅시다.
  • 첫, 끝 벡터를 올바르게 보냈나?
  • 바로 이렇게 시각적으로 보이는게 필요할 때 디버그라인을 그려서 디버그를 하면 됩니다.
bool UWorld::SweepMultiByChannel(
    TArray<struct FHitResult>& OutHits,
    const FVector& Start,
    const FVector& End,
    const FQuat& Rot,
    ECollisionChannel TraceChannel,
    const FCollisionShape& CollisionShape,
    const FCollisionQueryParams& Params,
    const FCollisionResponseParams& ResponseParam
) const

1. 소개

  • 이 함수는 게임 엔진의 UWorld 클래스에서 사용되며, 특정 채널을 기반으로 지정한 모양을 세계와 충돌 검출하기 위해 사용됩니다. 검출된 결과는 여러 카테고리로 정렬되며, 먼저 초기 오버랩(겹침)을 포함한 모든 충돌을 반환하고, 그 다음 겹침 및 최초 블록킹(막힌) 충돌을 반환합니다. 결과는 정렬되어 있어, 블록킹 충돌이 있는 경우에는 결과 배열의 마지막 요소에 위치하며, 블록킹 충돌이 최초로 발견된 경우에만 해당 결과가 생성됩니다.

2. 사용법

  • "SweepMultiByChannel"을 사용하는 데 필요한 주요 단계들은 다음과 같습니다:
    1. 채널 설정: 충돌을 검출할 채널을 설정합니다. 예를 들어, 플레이어와 적 채널을 정의하고 이들 사이의 충돌을 감지하려면 해당 채널들을 선택합니다.
    2. 스위핑 시작 위치: 스위핑의 시작 위치를 정의합니다. 이것은 객체가 충돌 검출을 시작하는 위치입니다.
    3. 스위핑 종료 위치: 스위핑의 종료 위치를 정의합니다. 객체가 어디까지 스위핑할지를 결정합니다.
    4. 결과 처리: 충돌이 감지되면, 이에 대한 결과를 처리합니다. 충돌된 객체를 식별하거나 다른 작업을 수행할 수 있습니다.

3. 주요 인수

  • 이 함수는 다양한 인수를 사용합니다. 주요 인수들은 다음과 같습니다:
    • 채널: 충돌 검출에 사용할 채널을 정의합니다. 다양한 채널을 설정하여 객체 간의 다양한 충돌 조건을 정의할 수 있습니다.
    • 시작 위치와 종료 위치: 스위핑의 시작 위치와 종료 위치를 지정합니다. 이렇게 하여 스위핑의 범위를 정의할 수 있습니다.
    • 결과 데이터: 충돌이 감지되면, 충돌 객체에 대한 정보를 얻을 수 있는 데이터 구조를 사용합니다.

4. 활용 사례

  • "SweepMultiByChannel"은 다양한 활용 사례가 있습니다:
    • 게임 캐릭터의 이동과 충돌 감지: 플레이어 캐릭터가 이동하는 동안 벽과의 충돌을 검출하거나, 적 캐릭터와의 접촉을 감지하는 데 사용됩니다.
    • 물리 시뮬레이션: 물리 시뮬레이션 엔진에서는 물체가 이동하는 동안 충돌을 검출하고 반응하도록 "SweepMultiByChannel"을 사용합니다.
    • 툴 제작: 게임 개발 툴에서 사용자가 레벨을 디자인하거나 충돌 영역을 설정할 때 이 함수를 활용합니다.

5. 주의사항

  • "SweepMultiByChannel"을 사용할 때 주의할 점:
    • 충돌 검출은 계산 비용이 높을 수 있으므로, 성능에 주의해야 합니다.
    • 정확한 채널 및 범위 설정이 중요하며, 오류가 발생하지 않도록 유의해야 합니다.

DrawDebugLine (디버그 라인 그리기)

  • 라인을 그려서 디버깅을 할 때 아래와 같은 고려사항이 있습니다
  • 스위프(물결 모양으로 이동하는 것처럼)로 디버깅하는 것.
  • 이는 시각적으로 문제를 파악하는 데 도움이 됩니다.
  • 인풋 값이 제대로 설정되었는지 확인하는 것이 중요합니다. 디버그 라인을 그릴 때 사용되는 여러 인수들을 검토해야합니다. 예를 들어, 시작점, 끝점, 색상, 두께 등의 인수가 있을 수 있습니다.

https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/Engine/UWorld/SweepMultiByChannel/

profile
게임 프로그래머

0개의 댓글