개발나라 스용공주

[언리얼엔진] #002 언리얼엔진으로 미로게임 만들기 / 블루프린트 사용 본문

개발일지/UNREAL ENGINE

[언리얼엔진] #002 언리얼엔진으로 미로게임 만들기 / 블루프린트 사용

스용공주 2022. 5. 14. 15:50
728x90
728x90

이번 글은 언리얼엔진을 활용하여 미로게임을 만들어 볼 것이다.

 

 

완성된 미로게임의 모습

 

 

> 플레이 영상 <

 

 

 

 

 

이 글은 미로게임 만들기의 상세 과정을 다 설명할 예정이라 이 글과 함께라면 누구나 쉽게 언리얼엔진으로 미로게임을 만들 수 있을 것 같다.

 

 

 

 

먼저 새 프로젝트 카테고리로 '게임'을 선택하고 템플릿 선택을 '기본'으로 해준 뒤 프로젝트 이름을 만들고 '미로 게임'을 만들 새 프로젝트를 생성해준다.

 

 

 

메뉴바에서 파일-새 레벨 (ctrl+N)을 선택하고 새 레벨에서 Default라는 이름의 레벨을 선택하여 화면을 세팅해준다.

 

 

 

우선 미로를 만드는 큰 과정에 대한 설명을 만들기를 시작하기에 앞서 설명하겠다.

 

[ 미로 만드는 과정 설명 ]

미로 모양 구성 -> 직사각형 모형의 액터 배치를 통한 미로 벽 설치 -> 그 외 추가적인 이펙트 넣기

 

 

 

[ 1. 미로 벽 만들기 ]

 

미로 벽은 액터 배치에서 지오메트리 박스를 활용하여 만들어줄 것이다.

사진과 같이 지오메트리에서 박스를 선택하여 뷰포트에 배치하여 본인이 만들고자 하는 미로 모양을 만들어준다.

 

이때 미로의 벽을 이루고 있는 서로 다른 두 박스 사이에 빈 공간을 만들어 플레이어가 통과할 수 있는 통로를 만들 수 도 있지만 벽을 뚫어 통로를 만드는 방법도 있다.

 

 

 

그리고 언리얼에서 액터의 위치, 회전, 크기를 조절할 때 직접 뷰포트의 우측 상단에 버튼을 눌러 변경 할 수도 있지만 Enter키를 눌러서 위치, 회전, 크기의 선택을 변경 할 수도 있다.

 

 

 

 

서로 다른 두 박스 사이에 빈공간을 만들어 플레이어가 통과할 수 있는 방법 예시
기존에 설치된 박스를 새로운 박스를 이용하여 뚫는 방법 예시

 

기존에 설치된 박스를 새로운 박스를 이용하여 뚫는 방법은 두가지가 있다.

 

> 1. 디테일 패널에서 브러시 세팅의 Brush Type을 Subtractive로 변경해준다.

디테일 패널에서 브러시 세팅의 Brush Type 값을 Additive에서 Subtractive로 변경해주면 도형이 투명하게 변하면서 기존에 설치해둔 벽면이 뚫리는 효과를 볼 수 있다.

 

> 2. 지오메트리 박스를 추가가 아닌 빼기로 선택한다.

지오메트리에서 박스를 추가 할 때 추가가 아닌 빼기를 선택하여 위의 사진의 왼쪽과 같이 눌러주면 투명한 박스가 생성되면서 그 박스를 기존에 설치해둔 벽면에 닿게 하였을때 그 벽면이 뚫리는 것을 볼 수 있다. 두번째 방법을 사용할 경우 도형을 '추가' 속성으로 선택한 후 '빼기'를 해주면 아무런 변화가 일어나지 않는다. 두번째 방법을 사용할 때는 꼭 도형 생성 전에 해주고 만약 도형 생성 후 변화를 주고 싶다면 1번 방법을 사용해야한다.

 

 

 

 

 

 

 

[ 2. 만든 미로벽 재질 입히기 ]

 

위와 같은 방법으로 기본적인 도형 배치와 벽 생성을 통해 벽을 만들어주었다면 이번에는 메테리얼을 적용하여 만든 미로를 꾸며보겠다.

 

> 바닥에 잔디 텍스쳐 입히기

우선 바닥을 눌러 바닥을 선택해준다.

월드 아웃라이너 패널에서 Floor(바닥)이 선택된 것을 볼 수 있다.

 

 

 

 

 

디테일 패널의 머티리얼에서 현재 Floor영역의 재질이 DefaultMaterial로 선택되어져 있는 것을 확인할 수 있다.

나는 잔디를 깔기 위해 DefaultMaterial이 써져있는 창의 옆에 ▼를 눌러 검색창에 Grass(잔디)를 검색해 선택해준다.

검색 결과로 나온 M_Ground_Grass를 선택해준다.

 

선택한 잔디 텍스쳐가 바닥 영역에 입혀진 것을 확인 할 수 있다.

 

이와 같은 방법으로 미로의 벽면들도 텍스쳐를 적용해준다.

 

 

 

미로 벽을 설치하고 벽을 뚫어 통로를 만들고 각종 텍스쳐들을 적용하여 꾸민 모습이다.

 

 

 

 

 

[ 3. 플레이 시 플레이어의 시작점 만들기 ]

 

플레이 버튼을 눌렀을 때 플레이어가 등장하는 위치 즉, 플레이 시작점을 만들어보겠다.

플레이 시작점은 이미 프로젝트를 생성할 때부터 만들어져있는 것이다.

 

따라서 우리는 우리가 원하는 위치로 플레이 스타터의 위치를 조정하기만 하면 된다.

 

 

 

우선 월드 아웃라이너 패널에서 Player Start를 검색해준다.

 

찾은 Player Start를 월드 아웃라이너에서 선택한 뒤 뷰포트에서 위치를 찾아 위치 이동 툴을 활용하여 내가 플레이어가 플레이를 시작하였을 때 플레이어를 놓고 싶은 위치에 Player Start를 놔준다.

 

 

 

 

 

 

[ 4. 미로 게임의 끝 지점 만들기 ]

 

나는 끝 지점에 '액터 배치-기본-원뿔'을 배치한 뒤 금색 텍스쳐를 입혀 금색 원뿔을 배치하여 미로의 끝 지점을 표시했다. 만드는 방법은 위에 미로 벽을 설치한 뒤 텍스쳐를 입히는 것과 동일한 방식이다.

 

 

 

 

 

 

 

 

 

[ 5. 다가가면 열리는 문 만들기 ]

 

그냥 뚫려져있는 문을 통과만 하는 형식의 게임 플레이라면 플레이어의 재미를 유도 할 수 없을 것이다.

플레이어가 일정 거리를 다가가면 열리는 문을 만들어 볼 것이다.

 

 

 

> 완성본 미리보기

우선 이러한 형태의 문을 만들 것이다.

 

 

이 문을 만들기 위해서는 TriggerBox를 사용해줘야한다.

 

여기에서 TriggerBox의 기능이자 하는 역할은 플레이어가 플레이 중 TriggerBox의 영역 안에 들어왔을 때 블루프린트로 설계해둔 기능을 실행시키도록 해준다.

 

 

 

 

> 1. 문 설치하기

그럼 다가가면 열리는 문을 만들어보도록 하겠다.

우선 미로벽에 플레이어가 지나갈 수 있는 통로를 만들어준다. ( [ 1. 미로 벽 만들기 ] 참고 )

 

그리고 액터 배치에서 기본을 선택한 뒤 큐브를 선택하여 배치한 뒤 월드 아웃라이너에서 Floor(바닥)안에 액터를 넣어주고 해당 액터는 문으로 사용할 것이므로 이름을 Door로 설정해준다. 나는 미로 게임을 만들면서 총 6가지의 문을 만들었기 때문에 6개의 Door 액터가 있는 것이다.

 

 

 

 

 

미로벽과 마찬가지로 Door도 본인이 만들고자 하는 사이즈로 조절해준 뒤 텍스쳐를 적용하여 만들어준다.

그렇게 디자인을 완성한 Door에는 디테일 패널에서 한가지 설정을 해줘야하는 것이 있다.

바로 트랜스폼에서 모빌리티 값을 기본 값인 '스태틱'이 아닌 '무버블'로 선택해줘야 하는 것이다.

 

 

이렇게 Door의 모빌리티 값을 무버블로 선택해준 과정까지 끝이 났다면 이제 트리거(Trigger)를 배치할 것이다.

 

 

 

 

> 2. 트리거 설치하기

트리거는 액터배치 패널에서 '트리거'를 검색하여 '박스트리거'를 선택하여 화면으로 끌어다가 배치해주면 된다.

트리거를 배치하면 위의 사진과 같이 노란 실선의 정육면체 형태로 배치되게 된다.

저 노란 실선의 의미는 저 위치에 플레이어가 플레이 도중 닿게 되면 블루프린트로 짜둔 스크립트를 실행하게 된다.

 

노란 실선의 영역은 일반 도형 액터처럼 위치, 회전, 크기 등의 값을 조절할 수 있다.

 

 

 

 

나는 문앞에 트리거를 배치하였고 이제 트리거에 플레이어가 닿으면 문이 열리는 구조의 블루프린트를 짜볼 것이다.

 

 

 

 

> 3. 블루프린트 작성하기

 

툴바에서 '블루프린트'를 누르고 '레벨 블루프린트 열기'를 눌러준다.

 

 

그리고 위의 사진과 같이 블루프린트를 작성해준다.

 

그럼 Door의 앞에 설치된 TiggerBox에 플레이어가 닿으면 "문이 열려있습니다."라는 멘트의 출력과 함께 문이 열린다.

여기에서 문은 없어진 것이 아닌 Z축 좌표로 100만큼 이동하여 없어진 것처럼 보이는 것이다.

 

"문이 열려있습니다."는 위의 사진처럼 플레이 시 뷰포트 화면의 좌측 상단에 출력되는데 이는 Trigger가 플레이어가 자신에게 닿았음을 인지하고 블루프린트에서 이와 연결되어져 있는 Print String에 입력되어진 문구를 출력하는 것이다.

 

 

 

 

 

 

 

[ 6. 닿으면 폭발하면서 사라지는 문 만들기 ]

 

다가가면 열리는 문 만들기를 활용하여 이번에는 Trigger를 통해 설정해둔 일정거리에 다가가서 플레이어에 닿으면 문이 폭발하면서 사라지는 효과를 넣어 만들어 볼 것이다.

 

 

 

 

> 1. 만드는 전체적인 방법

 

우선 만드는 전체적인 과정은 [ 5. 다가가면 열리는 문 만들기 ]와 똑같이 문과 트리거를 생성해준 뒤 블루프린트를 통해 지정된 트리거를 통해 지정된 문이 사라지도록 하는 과정이 동일하다. 이렇게 똑같이 설정해준 문에 블루프린트로 불 효과를 줄 수 있도록 해주는 'Spawn Emitter at Location'을 사용하여 만들어 줄 것이다.

 

 

 

 

 

> 2. 바닥에 불 효과 넣기

먼저 닿으면 불타오르는 문의 목적은 꽝을 의미하는 문으로 만들기 위해 위의 사진과 같이 문과 트리거를 설치해준 뒷 부분에 불 효과를 깔아줄 것이다.

 

 

 

 

 

 

불 효과를 깔아주는 방법은 다음과 같다.

콘텐츠 브라우저 패널에서 StarterContent를 선택해주고 그 안에서 Particles 항목을 골라준다.

그럼 여러가지 항목이 뜨게 되는데 이중에서 나는 불이 나고 있는 표현을 하고자 'P_Fire' 항목을 선택해주었다.

 

 

 

 

> 3. 폭발하며 사라지는 문 만드는 블루프린트

 

이렇게 문 뒤에 불 타는 파티클 시스템을 깔아주었다면 이제 블루프린트를 수정해보도록 하겠다.

기존 다가가면 열리는 문 블루프린트에서 Print String에 문구를 수정해주고 Spawn Emitter at Location를 새로 추가해주면 효과가 적용된다.

 

우선 폭발하면서 사라지는 문의 용도가 꽝인 만큼 닿았을 때 플레이 화면 좌측 상단에 뜨는 문구를 변경해 줄 것이다.

기존 블루프린트에서 문구만 변경해준 상태

 

블루프린트에 다음과 같이 문구를 적용하면 위의 사진과 같이 플레이 화면의 좌측 상단에 문구가 "문을 잘못 찾았습니다."로 변경되어 출력되게 된다.

 

 

 

 

 

그리고 지정한 문이 폭발하면서 사라지는 효과를 넣기 위해 Spawn Emitter at Location을 넣어준 뒤 Emitter Template을 폭발하는 효과를 제공하는 'P_Explosion'으로 변경해준다. 변경해준 것은 아래 사진과 같다.

이렇게 설정해주었다면 Location(위치) 값을 본인의 문에 맞추고 Scale을 폭발하는 이펙트를 본인이 원하는 사이즈만큼 조정해준 뒤 플레이를 해주면 된다. 나는 나의 문 위치에 맞게 Location값을 조절하였다.

 

 

 

플레이 시 위의 사진과 같이 문에 닿으면 문구가 출력되면서 폭발하는 듯한 효과가 적용되었다는 것을 볼 수 있다.

 

 

 

 

 

 

 

 

[ 7. 벽과 동일한 생김새이지만 다가가면 열리는 문 ]

 

이 문의 경우 [ 5. 다가가면 열리는 문 만들기 ]와 같이 설정해준 뒤 문에 적용한 텍스쳐를 미로벽에 적용한 텍스쳐와 같이 설정해주었다.

 

 

위의 사진과 같이 문이지만 미로벽의 텍스쳐와 같은 텍스쳐를 적용한 문을 설치해두었고 문으로 가는 진행방향의 앞에 설치해둔 트리거에 닿으면 "뚫리는 벽을 찾아 이동하세요." 라는 문구를 출력하게 만들어 플레이어가 보이지 않은 문을 찾는 것을 인지시켜주는 기능을 만들어 볼 것이다.

 

 

 

먼저 트리거를 설치해주고 위의 블루프린트와 같이 Print String을 활용하여 출력되는 문구를 변경해준다.

 

 

 

 

플레이를 해보면 위의 사진과 같이 트리거에 닿은 지점에서 플레이 화면에 좌측 상단과 같이 문구가 출력된다.

 

 

 

그리고 문을 찾으면 문앞에 설치된 트리거가 플레이어를 인식하여 문을 찾았다는 문구를 출력하고 문이 열리게 된다.

플레이 화면은 아래 사진과 같다.

 

 

 

 

 

그럼 이제 보물을 찾게 되고 보물 앞에 유리문과 유리문 앞에 트리거를 설치하여 트리거에 플레이어가 닿으면 폭죽 같은 이펙트와 함께 문이 열리면서 보물을 찾았다는 문구가 뜨는 플레이를 만들어 미로게임을 완성 시켜보겠다.

 

먼저 문은 위에서 해왔던 것처럼 설치해준 뒤 문의 텍스쳐를 유리로 적용해준다.

 

 

 

위의 사진과 같이 문구를 써주고 문이 열리는 블루프린트를 설치해준다.

나는 유리문을 GlassDoor라는 이름으로 설정해두었다.

 

 

 

 

그리고 플레이어가 닿았을 때 폭발하면서 사라지는 문과 같이 블루프린트에서 Spawn Emitter at Location를 선택하여 전에 만든 폭발하는 문처럼 폭발이 아닌 P_Sparks를 선택하여 스파크 이펙트를 선택해준다.

 

 

 

 

 

그럼 플레이어가 트리거에 닿으면 유리문이 열리면서 좌측 상단에 문구가 출력되고 이펙트가 실행된다.

 

 

 

이렇게 하면 '미로게임'이 완성된다.

 

 

 

 

 

 

 

----------------------------------------------------------------------------------------------------

 

만들고 있던 미로게임을 불러오는 방법에 대해 설명하겠다.

 

쭉 만드는 것이 아니라 중간에 저장을 하고 저장물을 켜서 다시 이어서 만들 경우 우리가 저장해둔 프로젝트를 연다고 해서 바로 우리가 만들고 있던 레벨 화면이 나오지 않는다. 그럴 경우 아래와 같이 실행시켜주면 우리가 만들고 있던 레벨을 다시 불러올 수 있다.

 

 

 

[ 저장해뒀던 레벨 불러오기 ]

만들고 있던 프로젝트를 선택해준다.

 

 

 

방법 1)

메뉴바에서 '레벨 열기'를 선택해준다.

 

 

 

 

그럼 위와 같이 창이 뜨게 되는데 여기서 내가 만들고 있던 미로게임을 다음과 같이 선택해준 뒤 우측 하단에 있는 '열기'버튼을 눌러 준다.

 

 

 

방법 2)

콘텐츠 브라우저 패널에서 콘텐츠를 선택해주고 바로 미로맵을 선택해주어 여는 방법도 있다.

 

 

 

 

 

 

 

이상 언리얼을 활용하여 만드는 미로 게임 글을 마친다.

 

 

 

 

728x90
728x90
Comments