OSWorlds - 게임 블로그 📌 게임 프로그래밍 📌 게임소식 🔑 로그인 📝 회원가입

언리얼 엔진 Line Trace, Sphere Trace, Box Trace 차이와 사용법 총정리

언리얼 엔진에서 공격 판정, 상호작용, 적 탐지 같은 기능을 만들다 보면 자주 등장하는 것이 Trace입니다.

이전 Collision 글에서 Box Collision이나 Sphere Collision처럼 실제 Collision Component를 이용해 충돌을 감지하는 방법을 살펴봤다면, Trace는 필요한 순간에 특정 방향이나 범위를 검사해서 어떤 Actor가 있는지 즉시 확인하는 방식이라고 생각하면 쉽습니다.

예를 들어 총을 발사했을 때 앞에 적이 있는지 확인하거나, 플레이어 앞에 상호작용 가능한 오브젝트가 있는지 검사하거나, 근접 공격 범위 안에 여러 적이 들어왔는지 확인할 때 활용할 수 있습니다.

언리얼 엔진에서는 기본적인 Line Trace뿐 아니라 Sphere Trace, Box Trace, Capsule Trace 같은 Shape Trace도 제공합니다. Epic Games 공식 UE 5.8 문서에서도 Line Trace와 Shape Trace를 이용해 충돌 객체를 검사하고 Hit 정보를 반환받을 수 있다고 설명하고 있습니다.

💡 한 줄 정답 — Line Trace는 가느다란 직선으로 정확한 대상을 검사할 때 적합하고, Sphere Trace는 일정 반경을 가진 공격이나 탐지에, Box Trace는 넓은 직사각형 형태의 공격 판정에 유리합니다. 근접 전투에서는 Sphere/Box Trace, 총기나 상호작용 검사에서는 Line Trace를 기준으로 선택하면 이해하기 쉽습니다.

목차


언리얼 엔진 Trace란?

Trace는 지정한 시작점에서 끝점까지 Collision을 검사하고 해당 범위에 존재하는 Actor나 Component의 정보를 가져오는 기능입니다.

가장 기본적인 형태는 다음과 같습니다.

Start
  ↓
Trace
  ↓
End

예를 들어 플레이어가 바라보고 있는 방향으로 Trace를 날리면

Player
   │
   └──────────────→ Enemy
                     ↑
                    Hit

처럼 중간에 Collision을 가진 Actor가 존재하는지 확인할 수 있습니다.

Epic Games의 UE 5.8 Trace 공식 문서에서도 Trace는 Start와 End 두 지점을 기준으로 Physics 시스템을 통해 Collision을 검사하며, 다른 엔진에서 사용하는 Raycast와 비슷한 개념이라고 설명합니다.

Trace는 다음과 같은 시스템에서 자주 사용합니다.

활용예시
총기총알 명중 검사
근접 공격주먹이나 검 공격 범위
상호작용문, NPC, 아이템 탐색
AI플레이어 발견 여부
지면 검사캐릭터 아래 바닥 확인
스킬특정 영역의 적 탐색

[언리얼 엔진 Trace 기본 구조]


Line Trace란?

Line Trace는 이름 그대로 Start와 End 사이를 하나의 가느다란 선으로 검사하는 방식입니다.

Start ●────────────────────● End
                 ↑
              Hit Actor

검사 범위가 선 하나이기 때문에 비교적 정확한 판정이 필요한 곳에 적합합니다.

대표적인 예가 총기입니다.

Fire
 ↓
Line Trace
 ↓
Break Hit Result
 ↓
Hit Actor
 ↓
Apply Damage

또는 플레이어 앞의 오브젝트를 조사하는 상호작용 시스템에서도 사용할 수 있습니다.

E Key
 ↓
Line Trace
 ↓
Hit Actor
 ↓
Interact

Line Trace의 장점은 판정 방향을 명확하게 지정할 수 있다는 것입니다.

반대로 근접 공격처럼 일정한 폭이 필요한 공격에서는 너무 좁을 수 있습니다.

예를 들어 적이 선에서 조금만 벗어나도

Trace ──────────────→

               Enemy

명중하지 않을 수 있습니다.

따라서 주먹, 검, 광역 공격 등에서는 Sphere Trace나 Box Trace가 더 적합할 수 있습니다.

[언리얼 엔진 Line Trace 사용 방법]


Sphere Trace란?

Sphere Trace는 Line Trace에 구 형태의 반경을 추가한 검사 방식입니다.

쉽게 표현하면 단순한 선이 아니라 일정 크기의 공을 Start에서 End까지 이동시키면서 Collision을 검사한다고 생각하면 됩니다.

Start
  ○────○────○────○────→ End
            ↑
          Enemy

따라서 Line Trace보다 넓은 범위를 검사할 수 있습니다.

Epic Games의 UE 5.8 공식 Sphere Trace For Objects 문서에서도 Sphere Trace는 지정한 Radius를 가진 Sphere를 Start에서 End까지 Sweep하면서 지정된 Object Type을 검사한다고 설명합니다.

Blueprint에서는 다음과 같은 입력값을 볼 수 있습니다.

Start
End
Radius
Object Types
Trace Complex
Actors to Ignore
Draw Debug Type
Ignore Self

특히 중요한 것은 Radius입니다.

예를 들어

Radius = 20

과

Radius = 100

은 공격 판정 범위가 크게 달라집니다.

근접 액션 게임에서는 주먹이나 발차기의 타격 범위를 너무 정밀한 Line Trace로 검사하기보다 Sphere Trace를 사용하면 조금 더 자연스러운 판정을 만들 수 있습니다.

[언리얼 엔진 Sphere Trace Radius 설정]


Box Trace란?

Box Trace는 직육면체 형태의 Collision 영역을 움직이며 범위를 검사합니다.

┌──────────┐
│          │
│   BOX    │ ─────→
│          │
└──────────┘

Sphere Trace보다 공격 범위를 세밀하게 만들고 싶을 때 유용합니다.

Epic Games의 UE 5.8 Box Trace For Objects 문서를 보면 Box Trace는 Start와 End 사이에서 Box를 Sweep하며 지정된 Object Type 중 처음 맞은 Hit를 반환하고, Half Size와 Orientation을 추가로 설정할 수 있습니다.

Blueprint에서는 대표적으로

Start
End
Half Size
Orientation
Object Types

등을 설정합니다.

특히 Half Size를 이용하면 X, Y, Z 크기를 각각 다르게 설정할 수 있습니다.

예를 들어 검을 크게 휘두르는 공격이라면

X = 100
Y = 150
Z = 80

처럼 공격 형태에 맞는 판정을 구성할 수 있습니다.

이 때문에 Box Trace는

대검 휘두르기
전방 광역 공격
보스 내려찍기
넓은 근접 콤보

같은 공격에 활용하기 좋습니다.

[언리얼 엔진 Box Trace 공격 판정 설정]


Line Trace, Sphere Trace, Box Trace 차이

세 가지 Trace를 한 번에 비교하면 다음과 같습니다.

Trace판정 형태장점추천 용도
Line Trace선정확하고 단순함총, 상호작용
Sphere Trace구넓고 자연스러운 범위주먹, 발차기, 탐지
Box Trace박스폭과 높이 조절 용이검, 광역 근접 공격
Capsule Trace캡슐길쭉한 범위캐릭터 탐색, 특수 공격

Epic 공식 문서에서도 Line Trace로 충분하지 않은 상황에서는 Box, Capsule, Sphere 같은 Shape Trace를 활용할 수 있다고 설명하고 있습니다. Shape Trace는 선뿐 아니라 일정 부피를 가진 Shape를 Sweep한다는 차이가 있습니다.

간단하게 기억하면 다음과 같습니다.

정확한 한 줄 검사
→ Line Trace

조금 넓은 원형 범위
→ Sphere Trace

폭과 높이가 필요한 범위
→ Box Trace

Trace By Channel과 For Objects 차이

Trace 노드를 검색하면 비슷한 이름이 여러 개 나옵니다.

예를 들어

Line Trace By Channel
Line Trace For Objects

Sphere Trace By Channel
Sphere Trace For Objects

처럼 나뉩니다.

둘의 차이는 무엇을 기준으로 Collision을 검사하는가입니다.

By Channel

Trace Channel 기준으로 검사합니다.

대표적으로

Visibility
Camera

같은 Channel이 있습니다.

Custom Trace Channel도 만들 수 있습니다.

WeaponTrace
InteractionTrace

For Objects

Object Type을 기준으로 검사합니다.

예를 들어

Pawn
WorldDynamic
PhysicsBody
Enemy

처럼 특정 Object Type만 찾을 수 있습니다.

Epic 공식 문서에서도 Trace는 크게 Channel과 Object Type을 기준으로 검사할 수 있다고 설명합니다.

전투에서 적만 찾고 싶다면

Sphere Trace For Objects
      ↓
Object Types
      ↓
Enemy

처럼 만들 수 있습니다.


Start와 End 위치 설정 방법

Trace에서 가장 중요한 입력은 Start와 End입니다.

일반적인 플레이어 전방 Trace라면 다음 방식으로 만들 수 있습니다.

Get Actor Location
      ↓
Start

End는 다음과 같이 계산합니다.

Get Actor Forward Vector
        ↓
      × 300
        ↓
Get Actor Location + 값
        ↓
       End

결과적으로

Start = Actor Location

End =
Actor Location
+
Forward Vector × Trace Distance

구조가 됩니다.

예를 들어 Trace Distance가 300이라면 캐릭터 앞쪽 약 300 Unreal Unit 범위를 검사합니다.

카메라 기준으로 Trace를 하고 싶다면 Actor Forward Vector 대신 Camera의 World Location과 Forward Vector를 기준으로 계산할 수도 있습니다.


Break Hit Result 사용 방법

Trace가 무언가를 감지하면 Out Hit이라는 Hit Result 정보를 반환합니다.

이 값을

Break Hit Result

에 연결하면 다양한 정보를 얻을 수 있습니다.

대표적인 값은 다음과 같습니다.

값의미
Hit Actor충돌한 Actor
Hit Component충돌한 Component
Impact Point실제 충돌 위치
Impact Normal충돌 면의 방향
Hit Bone NameSkeletal Mesh Bone
Phys MatPhysical Material
Trace StartTrace 시작 위치
Trace EndTrace 종료 위치

Epic UE 5.8 공식 Trace 문서에서도 Hit Result를 통해 Hit Actor, Hit Component, Impact Point, Hit Normal, Bone Name 등 다양한 정보를 반환받을 수 있다고 설명합니다.

전투에서는 특히

Hit Actor
Hit Location
Hit Bone Name

을 많이 사용합니다.

예를 들어 헤드샷 시스템이라면 Hit Bone Name을 확인하여

Head
 ↓
Damage × 2

같은 구조를 만들 수 있습니다.


근접 공격에 Sphere Trace 활용하기

근접 공격을 예로 만들어보겠습니다.

공격 Animation에서 실제 타격 시점에 Anim Notify를 호출합니다.

Attack Animation
       ↓
Anim Notify
       ↓
Sphere Trace For Objects

Trace의 Start는 캐릭터 위치 또는 주먹 Socket을 사용할 수 있습니다.

Hand Socket Location
        ↓
       Start

End는 공격 방향을 이용합니다.

Start
+
Forward Vector × 120
       ↓
      End

Radius는 예를 들어

Radius = 50

정도로 설정합니다.

전체 구조는 다음과 같습니다.

Anim Notify
     ↓
Sphere Trace For Objects
     ↓
Return Value
     ↓
Branch
     ↓
Break Hit Result
     ↓
Hit Actor
     ↓
Apply Damage

이렇게 하면 공격 Animation의 특정 순간에만 적을 검사할 수 있습니다.

[언리얼 엔진 Sphere Trace 근접 공격 구현]


Box Trace로 넓은 공격 판정 만들기

Box Trace는 넓은 공격을 만들 때 활용하기 좋습니다.

예를 들어 보스가 전방을 크게 내려찍는 공격을 한다고 해보겠습니다.

Boss Attack
    ↓
Anim Notify
    ↓
Box Trace

Half Size를

X = 80
Y = 180
Z = 100

정도로 설정하면 Sphere보다 넓은 좌우 범위를 만들 수 있습니다.

Orientation을 캐릭터 또는 공격 방향에 맞춰주면 공격 범위를 회전시키는 것도 가능합니다.

Boss Rotation
     ↓
Orientation

따라서

검 횡베기
보스 전방 공격
넓은 발차기
광역 내려찍기

등에서 활용할 수 있습니다.


Multi Trace는 언제 사용할까?

기본 Trace는 일반적으로 첫 번째 Hit를 반환합니다.

하지만 한 번의 공격으로 여러 적을 공격하고 싶다면 Multi Trace를 사용할 수 있습니다.

예를 들어

Sphere Trace For Objects

대신

Sphere Trace Multi For Objects

를 사용하면 여러 Hit Result를 배열로 받을 수 있습니다.

Out Hits
   ↓
For Each Loop
   ↓
Hit Actor
   ↓
Damage

같은 구조로 처리할 수 있습니다.

Epic 공식 문서에 따르면 Multi Trace는 조건에 맞는 여러 Hit 결과를 반환할 수 있으며, Channel 기반 Multi Trace와 Object 기반 Multi Trace에는 반환 방식에 차이가 있습니다.

따라서

한 명만 공격
→ Single Trace

여러 적을 동시에 공격
→ Multi Trace

로 구분하면 편합니다.


Draw Debug Type으로 Trace 확인하기

Trace를 만들었는데 공격이 맞지 않는다면 가장 먼저 추천하는 것이

Draw Debug Type

입니다.

예를 들어

For Duration

을 선택하면 게임 실행 중 실제 Trace 범위를 눈으로 확인할 수 있습니다.

Sphere Trace라면 Sphere가 이동한 영역이 표시되고, Box Trace라면 Box 형태의 범위를 볼 수 있습니다.

특히 다음 문제를 찾기 쉽습니다.

Start 위치가 잘못됨

End 방향이 반대임

Radius가 너무 작음

Box Size가 너무 좁음

Trace가 캐릭터 뒤에서 발생함

공격 판정 작업을 할 때는 처음부터 Debug Draw를 켜놓고 범위를 맞춘 뒤 완성 단계에서 끄는 방법을 추천합니다.


Trace가 적을 감지하지 못할 때 확인할 것

Trace가 보이는데도 적을 감지하지 못한다면 다음 순서로 확인합니다.

Trace 문제 발생
      ↓
① Start / End 확인
      ↓
② Trace Channel 확인
      ↓
③ Enemy Object Type 확인
      ↓
④ Collision Response 확인
      ↓
⑤ Ignore Self 확인
      ↓
⑥ Actors to Ignore 확인
      ↓
⑦ Trace Complex 확인
      ↓
⑧ Draw Debug로 범위 확인

특히 이전 Collision 글에서 다룬 Collision Response가 중요합니다.

예를 들어 WeaponTrace라는 Channel을 사용하고 있는데 Enemy Mesh가

WeaponTrace → Ignore

로 되어 있다면 Trace는 적을 제대로 Hit하지 않습니다.

Trace와 Collision 설정은 따로 존재하는 시스템이라기보다 서로 연결되어 있다고 이해하는 것이 좋습니다.


Trace와 Collision Component 중 무엇을 사용할까?

공격 판정을 만들 때 자주 고민하게 되는 부분입니다.

예를 들어 검 공격을

Sword Collision
→ Begin Overlap

으로 만들 수도 있고

Anim Notify
→ Sphere / Box Trace

로 만들 수도 있습니다.

둘을 비교하면 다음과 같습니다.

방법특징
Collision Component실제 Component를 지속적으로 감지
Trace필요한 순간에 검사
Line Trace정확한 한 방향 검사
Sphere Trace자연스러운 근접 범위
Box Trace넓고 조절 가능한 공격 영역

개인적으로 초보자라면 다음처럼 구분해서 시작하는 것이 이해하기 쉽습니다.

상시 감지 영역
→ Collision Component

특정 공격 순간 판정
→ Trace

총 또는 조준
→ Line Trace

주먹·발차기
→ Sphere Trace

검·광역 공격
→ Box Trace

물론 게임의 전투 방식에 따라 Collision과 Trace를 함께 사용하는 것도 가능합니다.


마무리

언리얼 엔진의 Trace는 공격 시스템이나 상호작용 기능을 만들 때 굉장히 자주 사용되는 기능입니다.

핵심은 모든 상황에서 하나의 Trace만 사용하는 것이 아니라 검사하려는 범위와 목적에 따라 적절한 형태를 선택하는 것입니다.

Line Trace
→ 정확한 직선 검사

Sphere Trace
→ 일정 반경의 자연스러운 범위

Box Trace
→ 폭과 높이를 조절하는 넓은 판정

Multi Trace
→ 여러 Actor 동시 검사

그리고 Trace가 정상적으로 작동하지 않는다면 단순히 Blueprint 노드만 확인하지 말고 이전에 알아본 Collision Channel과 Object Type, Collision Response 설정까지 함께 확인​해야 합니다.

특히 근접 액션 게임에서는 Anim Notify → Sphere/Box Trace → Break Hit Result → Damage 구조를 이해해두면 일반 공격부터 스킬, 보스 공격까지 다양하게 응용할 수 있습니다.


참고 사이트

이번 글은 Unreal Engine 5.8 공식 문서를 기준으로 확인했습니다.

  • Epic Games – Traces in Unreal Engine Overview
    Trace, Channel/Object Type, Single/Multi Trace와 Shape Trace의 전체 개념을 확인할 수 있습니다.
    Epic Games Trace 공식 문서
  • Epic Games – Sphere Trace For Objects
    Start, End, Radius, Object Types 등 Sphere Trace 입력값과 반환값을 확인할 수 있습니다.
    Sphere Trace For Objects 공식 문서
  • Epic Games – Box Trace For Objects
    Box Trace의 Half Size, Orientation, Object Type 등의 설정을 확인할 수 있습니다.
    Box Trace For Objects 공식 문서

함께 보면 좋은 글

  1. 언리얼 엔진 Collision 완벽 정리 – Block, Overlap, Ignore 차이
    • Trace By Channel과 For Objects 차이 문단에 내부 링크
  2. 언리얼 엔진 Blueprint Interface 사용법과 Cast 차이
    • Break Hit Result → Hit Actor 처리 부분에 내부 링크
  3. 언리얼 엔진 Damage System – Apply Damage와 Event AnyDamage
    • 근접 공격 Trace 예제에 내부 링크
  4. 언리얼 엔진 Component 종류와 사용법
    • Trace와 Collision Component 중 무엇을 사용할까? 문단에 내부 링크
  5. 언리얼 엔진 Accessed None 오류 원인과 해결 방법
    • Hit Actor Reference 처리 부분에 내부 링크

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤