오늘은 언리얼 엔진 5.5.4 기반의 FPS 프로젝트에서 그간 구현이 필요했던 핵심 기능들을 추가하고, 플레이 경험을 개선하기 위한 개인적인 아이디어를 구현하는 데 집중했습니다.
1. 기능 구현 1: 몬스터 사망 시 카운트 관리 로직
- 목표: 몬스터가 자폭하거나 사망할 때, 게임 내 전체 몬스터 수에 정확히 반영되도록 로직을 구현하는 것.
- 구현 내용: 기존에는 몬스터가 파괴될 때 카운트 변수를 관리하는 처리가 누락되어 있었습니다. 몬스터의 자폭 또는 사망 시점의 이벤트 그래프에 몬스터 관리 변수를 감소시키는 로직을 추가하여, 현재 살아있는 몬스터 수를 실시간으로 정확하게 추적할 수 있도록 완성했습니다.
- 학습 포인트: 게임의 상태 값(State)을 관리할 때는 객체의 생성과 파괴 생명주기에 맞추어 변수 업데이트 처리가 반드시 동반되어야 함을 확인했습니다.

2. 기능 구현 2: 게임 종료 시 일시정지 시스템
- 목표: 게임의 승패 여부와 관계없이, 게임 종료 조건이 충족되면 플레이어가 움직이지 못하게 시스템을 멈추는 것.
- 구현 내용: 캐릭터의 HP가 0 이하가 되는 시점에 호출되는 게임 종료 로직을 추가했습니다. UGameplayStatics::SetGamePaused 기능을 활용하여 게임이 종료되는 즉시 월드 내 모든 액터의 Tick을 멈추고 시간을 정지시켰습니다.
- 학습 포인트: 게임의 흐름 제어에서 Pause 상태를 어떻게 활용하는지 익혔습니다.

3. 추가 구현: 몬스터 위치 지시 UI (빨간 화살표)
- 목표: 플레이어 시야 밖의 적 위치를 직관적으로 알려주어 플레이의 쾌적함을 높이는 것.
- 구현 내용: 직접 기획한 기능으로, 플레이어의 카메라 방향과 몬스터의 위치를 비교하여 화살표가 몬스터를 가리키게 구현했습니다.
- 핵심 로직: ProjectWorldToScreen 노드를 사용하여 3D 월드 좌표를 2D 화면 좌표로 변환했습니다. 몬스터가 화면 안에 있을 때는 UI를 숨기고, 화면 밖으로 나갔을 때만 화면 가장자리에 화살표가 고정되어 몬스터 방향을 가리키도록 벡터 연산을 적용했습니다.
- 기대 효과: 단순한 FPS를 넘어, 적의 위치를 파악하기 쉬운 친절한 UI를 통해 게임의 완성도를 높였습니다.

'TIL' 카테고리의 다른 글
| [UE5] 언리얼 C++: 좌표 이동과 확률 시스템 구현하기 (0) | 2026.04.28 |
|---|---|
| [UE5]가장 가까운 몬스터 추적 UI 및 Is Valid 에러 해결 (0) | 2026.04.27 |
| [TIL] C++ 배열의 평균 구하기 & C언어 반복문과 배열의 기초 (0) | 2026.04.24 |
| [UE5]콜리젼을 이용한 아이템과 몬스터 행동패턴 (1) | 2026.04.23 |
| [UE5] 타임라인(Timeline)으로 구현하는 부드러운 총기 반동과 에임 복귀 (0) | 2026.04.22 |