Day 3에서는 FPS 게임의 기본 전투 흐름을 만든다.
카메라 기준 라인 트레이스로 총알 판정을 구현하고, 명중 위치에 이펙트를 출력하며, 총구 이펙트와 사운드, 반동, 연발 사격, 크로스헤어와 탄약 UI까지 연결한다.

1. Line Trace와 명중 판정

Line Trace는 카메라 위치에서 앞 방향으로 보이지 않는 직선을 쏘고, 그 직선이 어떤 물체에 닿았는지 확인하는 기능이다. FPS에서는 총알이 날아가는 경로를 간단하게 판정하는 방식으로 사용할 수 있다.

핵심은 시작점, 끝점, 결과다. 시작점은 카메라 위치이고, 끝점은 카메라 앞 방향으로 일정 거리만큼 이동한 위치다. 결과는 맞았는지, 맞았다면 어떤 액터에 맞았는지를 알려준다.

Line Trace By Channel 노드는 Visibility 채널을 사용한다. 시작점은 Player Camera ManagerCamera Location을 사용하고, 끝점은 Camera Location + Forward Vector * 거리로 계산한다. 처음에는 Draw Debug Type을 켜서 라인이 실제로 어디로 나가는지 확인한다.

라인 트레이스의 Return Value는 무언가에 맞았으면 true, 아무것도 맞지 않았으면 false다. Break Hit Result를 사용하면 Hit Actor, Impact Point, Impact Normal 같은 결과 정보를 분리해서 확인할 수 있다.

2. 총구 이펙트와 충돌 이펙트

Niagara 이펙트는 Spawn System Attached로 붙여서 재생한다. Niagara 안의 각 Emitter의 옵션 값을 바꿔 수정할 수 있다.
메모리에 이펙트가 쌓이지 않도록 Auto Destroy도 켜야 한다.

Cascade 방식은 Spawn Emitter at Location을 사용한다.

3. 사운드

총을 쏠 때 사운드도 함께 재생해야 한다. 사운드는 Play Sound 2D로 재생하고, Sound Cue를 연결한다. 소리가 너무 크면 Volume Multiplier를 낮춰 조정한다.

핵심 정리

개념 내용
Line Trace By Channel 카메라 기준으로 보이지 않는 직선을 쏴서 명중 여부를 확인하는 기능이다.
Break Hit Result 명중 결과를 분해해서 맞은 액터, 위치, 표면 방향을 확인하는 기능이다.
Niagara System UE5의 VFX 시스템이며 Spawn System 계열 노드로 재생한다.
Cascade Particle 이전 파티클 시스템이며 Spawn Emitter 계열 노드로 재생한다.
Auto Destroy 이펙트 재생이 끝난 뒤 자동으로 제거해 메모리 누수를 막는 옵션이다.
Sound Cue 사운드를 조합하거나 볼륨과 피치를 제어할 수 있는 사운드 에셋이다.
Function 반복되는 노드 로직을 하나의 이름으로 묶어 관리하는 기능이다.
User Widget 화면에 표시되는 UI를 만드는 위젯 블루프린트다.
Is Variable 위젯 내부 요소를 외부 블루프린트에서 접근할 수 있게 만드는 옵션이다.

'TIL' 카테고리의 다른 글

Rendering : Forward, Deferred  (0) 2026.05.04
TEXT RPG 2  (0) 2026.04.29
TEXT RPG 1  (0) 2026.04.28
EventGraph  (0) 2026.04.24
3인칭 캐릭터를 1인칭으로 사용할 때 얼굴 가림 문제  (0) 2026.04.23