개요
오늘은 블루프린트를 활용하여 간단한 게임을 직접 제작하는 미니 프로젝트를 진행하였다. 프로젝트의 주제는 '장애물 피하기'로, 플레이어가 맵의 시작 지점에서 출발하여 움직이는 장애물을 피해 골 지점까지 도달하는 것이 목표이다. 이번 프로젝트에서는 단순히 오브젝트를 배치하는 것에서 끝나는 것이 아니라, 장애물 이동, 충돌 판정, 게임오버 UI, 클리어 UI, 재시작 기능 등을 직접 구현하며 하나의 게임 플레이 흐름을 구성해보는 데 집중하였다. 특히 지금까지 학습한 Timeline, Overlap 이벤트, Widget Blueprint, Player Controller 등을 실제 게임 형태로 연결해보면서 각각의 기능이 어떤 역할을 하는지 경험할 수 있었다.
구현 과정
① 플레이어 이동 구현
기본 Third Person 템플릿을 기반으로 프로젝트를 시작하였다. 기본적으로 제공되는 IA(Input Action)와 IMC(Input Mapping Context)를 사용하여 플레이어 이동과 카메라 회전 기능을 구성하였다. 프로젝트 시작 시 플레이어가 정상적으로 스폰되는지 확인하고, 게임 플레이에 문제가 없는지 수시로 테스트하였다.
② 장애물 구현
장애물은 BP_Obstacle 블루프린트로 제작하였다.

장애물 이동 기능
BeginPlay에서 이동 위치 초기화
→ Timeline 재생
→ Lerp를 이용하여 위치 보간
→ SetActorLocation으로 이동
→ Timeline Loop를 이용하여 반복 이동
장애물마다 이동 거리와 Timeline 길이를 다르게 설정하여 서로 다른 속도로 움직이는 장애물을 만들 수 있었다.
게임오버 처리 기능
플레이어와 장애물이 Overlap
→ 게임오버 UI 생성
→ Add To Viewport
→ 플레이어 입력 차단
→ 마우스 커서 표시
초기에는 입력을 차단했음에도 특정 상황에서 캐릭터가 계속 움직이는 문제가 발생하였다.
원인을 확인해보니 이동 키를 누른 상태에서 충돌하면 이동 상태가 유지되는 경우가 있었고, Player Controller를 이용하여 Input Mode를 UI Only로 변경함으로써 문제를 해결할 수 있었다.
④ 게임오버 UI 구현
Widget Blueprint를 이용하여 WBP_GameOver를 제작하였다.

Game Over 텍스트 배치
→ Retry 버튼 추가
→ 버튼 클릭 시 현재 레벨 다시 로드
게임오버가 발생하면 UI가 화면 중앙에 표시되도록 구성하였으며, 플레이어는 Retry 버튼을 눌러 게임을 다시 시작할 수 있도록 하였다.
⑤ 골 지점 및 클리어 기능 구현
맵의 끝에 Goal 액터를 배치하고 Overlap 이벤트를 이용하여 클리어를 판정하였다.

클리어 처리 기능
플레이어가 Goal과 Overlap
→ 클리어 UI 생성
→ Add To Viewport
→ 플레이어 입력 차단
→ 마우스 커서 표시
게임오버와 동일한 방식으로 UI를 표시하되, 클리어 메시지를 출력하도록 구성하였다.
⑥ 다시하기 기능 구현
게임오버 UI와 클리어 UI 모두 Retry 버튼을 배치하였다.

Retry 버튼 클릭
→ Open Level
→ 현재 맵 이름 지정
→ 레벨 재시작
이를 통해 플레이어를 초기 위치에 다시 스폰시키고 게임 상태를 초기화할 수 있었다.

레벨 블루프린트에 시작 시 Game only로 시작하게 하여 UI 모드가 지속되지 않게 했다.
후기
이번 프로젝트는 지금까지 학습한 기능들을 하나의 게임 형태로 조합해보는 좋은 경험이었다. 이전에는 문 열기, 버튼 상호작용과 같은 개별 기능을 구현하는 데 집중했다면, 이번에는 플레이어의 시작부터 게임오버, 클리어, 재시작까지 전체 게임 흐름을 설계하고 구현해볼 수 있었다. 특히, Overlap 이벤트를 이용한 충돌 판정과 Widget Blueprint를 활용한 UI 시스템을 직접 구현하면서, 게임 플레이와 UI가 어떻게 연결되는지 이해할 수 있었다. 또한, 단순히 기능을 구현하는 것에서 끝나는 것이 아니라, 플레이 중 발생하는 예외 상황을 확인하고 수정하는 과정이 중요하다는 점도 느낄 수 있었다.
게임오버 이후에도 캐릭터가 계속 움직이는 문제를 해결하는 과정에서는 입력 처리와 Player Controller의 역할을 다시 이해할 수 있었고, 실제 개발에서는 기능 구현보다 디버깅과 상태 관리에 더 많은 시간이 소요될 수 있다는 점을 체감하였다.
이번 프로젝트를 통해 하나의 작은 게임을 처음부터 끝까지 직접 완성해보았으며, 앞으로는 점수 시스템, 타이머, 다양한 장애물 패턴 등 게임성을 높이는 기능도 추가해보며 더욱 완성도 높은 게임을 만들어보고 싶다.
'언리얼 엔진 > TIL' 카테고리의 다른 글
| TIL - 본캠프 2일차 (0) | 2026.06.29 |
|---|---|
| TIL - 본캠프 1일차 (0) | 2026.06.26 |
| TIL - 베이스캠프 11일차 (0) | 2026.06.22 |
| TIL - 베이스캠프 10일차 (0) | 2026.06.19 |
| TIL - 베이스캠프 9일차 (0) | 2026.06.18 |