오늘은 언리얼 엔진을 활용해 기존의 발판 중심 레벨에서 벗어나, 끊임없이 쫓아오는 AI 적과 장애물을 피해 생존 시간을 기록하는 게임을 만들어 보았습니다.
1. 레벨 구성: 발판 대신 '장애물'과 'AI'로 가득하게!
플레이어의 이동 동선을 방해하는 **장애물(Static Mesh Actors)**과 플레이어를 추격하는 AI 캐릭터들을 배치했습니다.
- 장애물 배치: 플레이어가 도망가는 경로에 무작위로 장애물을 배치해 긴장감을 높였습니다.
- AI 적 캐릭터: NavMeshBoundsVolume을 설정하여 AI가 플레이어를 실시간으로 추격하도록 로직을 짰습니다.

2. 게임 오버 시스템: "적에게 닿는 순간 종료!"
보통 특정 지점에 도달하면 클리어되는 방식과 달리, 이번에는 AI와의 충돌을 게임 종료 조건으로 설정했습니다.
- 충돌 이벤트: AI 캐릭터의 OnComponentBeginOverlap 또는 OnActorHit 이벤트를 사용하여 플레이어와 접촉했는지 감지합니다.
- 시스템 연결: 충돌 시 게임의 흐름을 멈추고 결과 화면을 띄우도록 설계했습니다.

3. 타이머 & 생존 점수 UI
얼마나 오래 살아남았는지가 곧 실력이 되는 시스템입니다.
- Tick/Timer 사용: 게임 시작과 동시에 시간을 카운트합니다.
- 점수화: Float 형태의 시간을 초 단위로 변환하여 UI 텍스트로 실시간 노출하고, 게임 오버 시 최종 생존 시간을 "당신의 기록: 00초" 형태로 강조해 보여줍니다.

🛠️ 이번 프로젝트의 핵심 트러블슈팅 (Troubleshooting)
문제 상황: 모든 로직을 구현하고 빌드했는데, 시작 화면에서 다음 단계로 넘어가지 않는 프리징/UI 겹침 현상 발생.
원인 파악: 디버깅 결과, UI 출력 명령이 두 곳에서 동시에 실행되고 있었습니다.
- GameMode Blueprint: 시작 UI를 생성하고 Viewport에 추가함.

- Character Blueprint: 캐릭터가 스폰될 때 또 다른 UI를 생성함.

두 개의 UI가 서로 우선순위를 다투거나 입력을 가로채면서 게임 진행이 불가능했던 것이었습니다.
해결 방법: UI 생성 로직을 GameMode 한 곳으로 통합 관리하도록 수정했습니다.

캐릭터 블루프린트 내의 중복된 Create Widget 노드를 제거하니 정상적으로 게임이 실행되었습니다! 역시 UI 관리는 한 곳에서 제어하는 것이 안전하다는 것을 다시 한번 깨달았네요.
🍎 마치며
무언가 안될 때는 당황하지 말고 천천히 처음부터 차근차근 해보자.



'TIL' 카테고리의 다른 글
| UE5 핵심 조명 5종 세트 (0) | 2026.04.07 |
|---|---|
| [UE5] 트리거 볼륨을 활용한 자동문과 앞마당 환경 제작기 (0) | 2026.04.06 |
| [내일배움캠프 Unreal] 사전캠프 - 에셋 다운로드 및 커스터마이징 실습 (0) | 2026.04.03 |
| [UE5] 리깅된 캐릭터 에셋 임포트 및 IK Retargeter를 활용한 애니메이션 리타게팅 실습 (1) | 2026.04.01 |
| 언리얼+블루프린트 개념정리 (액터와 컴포넌트) (0) | 2026.03.31 |