본문 바로가기
Develop Story/Game Engine

Unreal 4 - Puzzle game 개발 - 03 클리어와 UI

by 늘상의 하루 2020. 10. 19.

neulsang-day.tistory.com/15

 

Unreal 4 - 블루프린트로 퍼즐 게임 만들기

이번에 이력서를 준비하면서 많은 회사들이 언리얼을 다루는 것을 알게 되었습니다. 문제는 제가 언리얼을 제대로 다뤄본 적이 없다는 사실입니다. 문제가 있으면 고쳐야죠. 바로 언리얼 공부��

neulsang-day.tistory.com

 

이전 글에서는 발판을 밟으면 상자가 움직이는 기믹을 만들어 보았습니다.

이번에는 클리어 영역과 게임 클리어시 나타는 UI를 작업해 보겠습니다.

 

 

새로운 박스 트리거를 생성하고 블루프린트 뷰포트에서 머터리얼도 먹여 줍시다.

그리고 ClearRoom이라는 태그를 달아 줍시다.

 

 

바로 블루프린트를 작성하겠습니다. 아주 심플합니다.

 

 

ActorBeginOverlap 이벤트를 생성하고 Bool(Clear) 변수를 생성한 다음 Set Clear 노드에서 체크를 해 주시면 됩니다.

네, 이쪽은 끝났습니다.

 

이제 골인 지점과 충돌시 클리어 UI가 뜰 수 있도록 게임 모드 셋팅을 해줄 겁니다.

게임 모드 셋팅은 레벨마다 갈아끼울 수 있는 레벨 블루프린트 같은 겁니다.

- UI(위젯)은 어째서인지 레벨 블루프린트와 게임 모드 블루프린트에서만 생성이 되더라구요.-

 

콘텐츠 브라우저를 우클릭 하고 [Blueprint Class-Game Mode Base]를 생성해 줍시다.

생성된 게임 모드 셋팅은 우측의 [월드 세팅-Game Mode-GameMode Override]에서 설정 가능합니다.

생성 후 장착까지 완료 되었다면 클리어시 나타날 UI도 만들어 봅시다.

 

빈 공간을 우클릭하여 [유저 인터페이스-위젯 블루프린트]를 생성하고 이름을 임의로 정해 봅시다.

지금 당장은 사용하지 않을 계획이지만 더블 클릭하여 내용을 확인해 보셔도 무방합니다.

 

먼저 게임 모드 블루프린트를 수정할 계획입니다.

방금 만든 게임 모드 블루프린트를 더블 클릭하여 블루프린트 편집을 진행해 봅시다.

 

완성본은 이렇습니다.

 

우선 BeginPlay 이벤트를 생성하고 방금 만든 클리어 발판의

태그값을 가져오기 위해 Get All Actor with Tag를 가져옵시다.

 

다음으로 Out Actors를 이어서 Array 항목의 Get 노드를 생성해 주고

클리어 발판 블루프린트의 이름을 적어 형변환 노드를 생성해 줍시다.

그리고 As 파츠를 변수로 승격시킨 다음 변수명을 임의로 수정해 줍시다. 저는 ClearRoom으로 정했습니다.

 

 

다음으로 클리어 발판에 도착했는지 지속적으로 확인하기 위해 Tick 이벤트를 생성해 줍시다.

이어서 Branch를 만들어 주고 방금 만든 ClearRoonClear 값을 get으로 가져와서 연결해 줍시다.

Ture 값만 사용할 계획이니 드래그하여 Clear시 나타날 UI의 정보를 가져오는 ㅇㅇ위젯 생성 노드를 만들어 줍시다.

Get Player Controller를 생성하여 위 이미지와 같이 연결해 줍시다.

 

그 다음으로 클리어 판정을 다시 꺼 줍시다. SET을 사용하여 CleaarRoomClear를 체크 해제합시다.

이어서 Add to Viewport 노드를 만들어 연결해 줍시다. 마지막으로 마우스 커서를 출력하기 위해

Show mouse cursorGet Player Controller에서 연결하여 생성한 다음 위 이미지처럼 연결해 줍시다.

 

이제 블루프린트 작업은 끝났습니다. UI 작업에 대해 간단히 접해 봅시다.

좌측 팔레트에서 필요한 도구들을 사용할 수 있습니다.

기능적인 요소를 끌어다 놓고 디테일에서 원하는 디자인으로 UI를 꾸밀 수 있습니다.

 

버튼의 경우에는 디테일의 최하단 항목에서 이벤트를 추가할 수 있으며 원하는 이벤트를 클릭하면

바로 우측 상단의 그래프 항목으로 넘어가 해당 이벤트 노드가 추가됩니다.

 

버튼을 클릭하면 다음 레벨로 넘어가거나 리셋하거나 게임을 종료하는 동작을 하는 노드입니다.

제 블루프린트는 기본적인 기능들로 구성되어 있기 때문에 전문가에 비하면 노드가 좀 산만합니다.

 

다음 장에서는 UI 버튼에 따른 기능 실행. (리셋, 다음 레벨, 종료)를 구현할 계획입니다.