본문 바로가기
Develop Story/Game Engine

Unreal 4 - Puzzle game 개발 - 04 레벨 이동

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

neulsang-day.tistory.com/15

 

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

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

neulsang-day.tistory.com

해당 작업을 하면서도 이것보다 뭔가... 더 좋은 방법이 있을 것 같은데 아직 찾지는 못했습니다.

스테이지 클리어 UI가 출력되고 해당 버튼에 따른 기능 구현을 이야기할 생각입니다.

구현할 내용은 리셋, 다음 스테이지, 종료입니다.

 

우선 리셋과 다음 스테이지로 넘어가기 위해서는 해당 레벨에 대한 정보를 알아야 합니다.

저는 간단하게 숫자로 각 레벨을 정리했습니다.

 

레벨 블루프린트에서 작업할 수 있으면 좋지만 레벨 블루프린트는 캐스팅이 안 됩니다.

우선 클리어 발판 블루프린트로 들어갑시다.

 

여기서 저는 LevelGet이라는 int 변수를 하나 만들어 줄 겁니다.

우측의 디테일 항목에서 인스턴스 편집 기능과 스폰시 노출 기능을 체크해 줍시다.

블루프린트에서 값을 정하지 않고 메인 화면의 디테일에서 입력할 겁니다.

- 기본값이 뜨지 않으면 컴파일을 한번 해 보세요.-

 

 

메인 작업 화면에서 클리어 발판을 클릭한 다음 우측 디테일 화면을 봅시다.

Default 항목에 Level Get이 있을 겁니다. 앞으로 여기애 해당 레벨의 넘버를 적어 주시면 됩니다.

 

이제 다시 스테이지 클리어 UI의 블루프린트로 들어갈 겁니다.

먼저 리셋 작업부터 진행하겠습니다.

 

완성된 노드는 이렇습니다.

 

딜레이 노드가 없으면 사운드가 모두 재생되기 전에 끊어집니다.

Remove from Parent노드는 UI창을 제거하는 기능을 가졌습니다.

마우스 커서를 다시 없애는 노드는 Get Player Controller와 함께합니다.

 

리셋 버튼을 눌렀으니 지금 스테이지로 돌아와야 할 겁니다.

방금 저장했던 LevelGet 값이 필요합니다. Get All Actors woth Tag 노드를 생성합니다.

이전 장에서 했던 것과 같이 Array Get 노드와 클리어 발판의 형변환 노드를 생성해 줍시다.

 

이어어서 Get LevelGet을 생성하고 -1 빼기를 해 줄겁니다. int-int 노드를 사용하면 됩니다.

인티저 스위치 노드를 사용할 계획인데 첫 번째 스테이지는 0에 해당하기 때문입니다.

- 임의로 1 위치에 배치하면 빼지 않아도 됩니다. 어지간하면 0 위치는 타이틀 화면이나 인터페이스 레벨을 위해 비워두세요-

 

그 다음 인티저에 따른 스위치 노드를 생성합니다. 해당 노드는 입력된 숫자값에 따라 작업을 바꿔줍니다.

그 다음으로 0 위치에서 Open Level 노드를 드래그해 생성합니다.

Level Name을 변수로 승격시키면 이름 유형으로 만들어지는데 기본값에 지금 레벨의 이름을 써 주시면 됩니다.

- 왜 이렇게 했는지는 모르지만 신기하게도 이러면 작동합니다.-

 

네, 이렇게 하고 진행을 하면 리셋이 완료됩니다.

다음은 Next Stage 레벨 이동입니다만 사실 앞 부분이랑 똑같습니다.

 

리셋이라는 기능 자체도 지금 레벨로 다시 이동하는 기능이니까요.

차이점이라면 - 노드 없이 그대로 받아다가 연결하는 겁니다.

 

마지막으로 게임 종료 기능입니다.

 

 

게임 종료 역시 게임의 기본적인 기능이라 그런지 전용 노드가 있습니다.

Quit Game 노드를 생성해 주시고 드롭박스 메뉴에서 Quit를 설정해 주세요.

네, 이걸로 끝났습니다.

 

이러한 과정으로 해당 게임을 만들었습니다.