언리얼 엔진/TIL

TIL - 베이스캠프 11일차

journey46110 2026. 6. 22. 17:15

개요

오늘은 지금까지 배운 내용을 활용하여 나만의 인터랙티브 공간을 만드는 미니 프로젝트를 진행했다. 작은 던전을 주제로 정하고, 플레이어가 버튼을 눌러 문을 열고 방 안으로 들어간 뒤, 아이템을 획득하여 다시 탈출하는 흐름을 구현하였다. 단순히 오브젝트를 배치하는 것에서 끝나는 것이 아니라, 여러 블루프린트가 서로 이벤트를 주고받으며 하나의 게임 플레이 흐름을 만들어보는 것을 목표로 작업하였다.

01
던전 View

 

 

구현 과정

① 캐릭터 이동 및 회전

기본 Third Person 템플릿의 IA(Input Action)와 IMC(Input Mapping Context)를 사용하여 캐릭터 이동과 카메라 회전 기능을 구성하였다.

 

② 문 열기 및 닫기 기능 구현

던전의 문(BP_DungeonDoor)을 제작하여 열리고 닫히는 기능을 구현하였다.

던전의 문

BeginPlay에서 닫힌 위치와 열린 위치를 초기화

→ IsOpen 변수를 이용하여 현재 문 상태 저장

→ OpenDoor, CloseDoor 이벤트를 제작

→ Branch를 통해 이미 열린 문이나 닫힌 문이 중복 실행되지 않도록 처리

→ Timeline을 이용해 자연스럽게 회전하도록 구현

 

③ 버튼을 누르면 문이 열리는 기능 구현

플레이어가 밟을 버튼(BP_DungeonButton)을 제작하여 버튼과 문이 상호작용하도록 만들었다.

던전 오픈 버튼

플레이어가 버튼과 Overlap

→ Timeline을 이용해 버튼이 눌리는 애니메이션 재생

→ DoorRef를 통해 BP_DungeonDoor의 OpenDoor 이벤트 호출

→ 버튼을 누르면 문이 열리도록 구성

 

블루프린트 간 Object Reference를 이용하여 액터끼리 이벤트를 전달하는 방법을 경험할 수 있었다.

 

④ 일정 구간 진입 시 문 닫기 기능 구현

플레이어가 방 안으로 들어오면 문이 다시 닫히도록 별도의 Trigger 액터(BP_DoorCloseTrigger)를 제작하였다.

문 닫힘 트리거

플레이어가 특정 구간과 Overlap

→ DoorRef를 통해 CloseDoor 이벤트 호출

→ HaveTrigger(Boolean) 변수를 사용하여 한 번만 작동하도록 구성

→ 트리거가 반복 실행되는 문제를 방지

 

상태를 저장하는 변수의 중요성을 다시 느낄 수 있었다.

 

⑤ 아이템 획득 및 던전 탈출 구현

방 안에 아이템을 배치하고 E키를 이용한 상호작용 기능을 추가하였다.

아이템 블루프린트에서는

던전 키 아이템

플레이어가 일정 범위 안에 들어오면 획득 가능 상태 설정

→ 플레이어가 범위를 벗어나면 획득 불가 상태로 변경

→ GetItem 이벤트를 제작하여 실제 획득 처리 담당

 

캐릭터 블루프린트에서는

아이템 획득 기능

E키 입력

→ Line Trace 수행

→ 아이템과 충돌 여부 확인

→ 아이템의 GetItem 이벤트 호출

 

아이템을 획득하면

문이 다시 열리고

→ 아이템 오브젝트가 제거되며

→ 플레이어가 던전 밖으로 탈출할 수 있도록 구성하였다.

 

최종적으로 다음과 같은 흐름을 완성하였다.

01234
결과

버튼 밟기
→ 문 열림
→ 던전 입장
→ 문 닫힘
→ 아이템 획득
→ 문 다시 열림
→ 던전 탈출

 

 

후기

이번 미니 프로젝트에서는 지금까지 배운 Overlap, Branch, Boolean 변수, Timeline, Object Reference, Line Trace 등을 하나의 흐름 안에서 직접 활용해볼 수 있었다. 처음에는 단순히 문 하나를 여는 기능 정도를 생각했지만, 구현을 진행하면서 버튼, 문, 트리거, 아이템, 캐릭터가 서로 이벤트를 주고받으며 하나의 게임 플레이를 구성하게 되었다. 특히 각 기능을 하나의 블루프린트에 모두 넣는 것이 아니라 역할별로 분리하고 필요한 경우에만 참조하도록 구성해보면서 블루프린트를 나누어 설계하는 이유를 조금씩 이해할 수 있었다.

 

또한, 기능 자체를 구현하는 것보다 변수의 상태를 관리하는 부분이 생각보다 중요하다는 것을 느꼈다. 문이 반복해서 닫히는 문제나 Object Reference가 비어 있어서 발생한 오류 등을 해결하면서, 기능을 추가하는 것만큼 상태를 올바르게 관리하는 것이 중요하다는 점을 경험할 수 있었다. 이번 프로젝트를 통해 여러 기능을 연결하여 하나의 게임 플레이를 구성하는 과정을 처음부터 끝까지 직접 경험할 수 있었고, 앞으로 더 많은 기능을 배우게 되면 지금 만든 작은 던전을 더욱 발전시켜보고 싶다는 생각이 들었다.

'언리얼 엔진 > TIL' 카테고리의 다른 글

TIL - 본캠프 1일차  (0) 2026.06.26
TIL - 베이스캠프 12일차  (0) 2026.06.24
TIL - 베이스캠프 10일차  (0) 2026.06.19
TIL - 베이스캠프 9일차  (0) 2026.06.18
TIL - 베이스캠프 8일차  (0) 2026.06.17