본문 바로가기
Programming/Entry

엔트리(entry)로 비행기 슈팅게임 만들기 - 7. 엔딩 화면 만들기

by BACKK0M 2019. 5. 21.
반응형

 

1. 기획

2. 시작화면 및 설명화면 만들기

3. 운석 만들기

4. 비행기 만들기

5. 미사일 만들기

6. 점수 측정하기

7. 엔딩 화면 만들기

8. 상점 화면 만들기

9. 상점 구매기능 만들기

10. 공격 속도 업그레이드 적용하기

11. 이동 속도 업그레이드 적용하기

12. 총알 개수 증가 업그레이드 적용하기

13. 폭탄 적용하기

14. 난이도 적용하기1

15. 난이도 적용하기2

16. 난이도 적용하기3

17. 보스 만들기

18. 효과음 넣기

19. 오프닝 화면, 엔딩 크레딧 만들기

20. 공유하기

 

이번 포스팅에서는 게임이 종료된 후 획득한 점수를 보여주는 엔딩 화면을 만들어 보도록 하겠습니다.

 

우선 엔딩이라는 이름을 갖는 장면을 하나 추가해줍니다. 이 장면으로 이동하는 조건은 비행기가 운석오브젝트에 닿았을 때 이동될 것입니다. 이 장면에서 이루어지는 동작은 다음과 같습니다.

1. 이전 게임의 점수와 최고 점수를 보여준다

2. 다시 시작 버튼을 통해 게임을 재시작할 수 있다.

 

아래와 같이 장면을 생성해주고, 이름을 엔딩으로 바꿔줍니다.

 

엔딩 장면 생성

그 후 엔딩 장면에서 사용할 배경 오브젝트를 하나 추가해줍니다. 흰색만 보이면 약간 밋밋하겠죠?

 

단색 배경 추가하기

4개의 글상자를 생성할 것입니다. 그 이유는

 

1) 점수: 2) 이전 게임 점수

3) 최고 점수: 4) 최고 점수

 

이런 식으로 4 개를 사용할 것이기 때문이죠. 위에서 1) 번과 3) 번은 고정되어 있는 텍스트이고, 2) 번과 4) 번은 변수로부터 유동적으로 바뀔 텍스트입니다. 아래와 같이 글상자를 생성해줍니다.

 

1)번 글상자 생성
2)번 글상자 생성
3)번 글상자 생성
4)번 글상자 생성

그 후 크기를 약간 작게 만들어주시고, 아래와 같이 배치해줍니다(크기와 배치는 자유롭게 해 주세요!).

 

글상자 배치

글상자들의 배경 흰색이 보기에 좋지 않으므로, 투명하게 만들어줍니다.

 

체크 해제
투명하게~~

최고 점수가 갱신되었을 때 변화를 주는 것이 좋을 것 같네요. 오브젝트를 하나 추가해줍니다. 오브젝트 추가하기에서 을 검색한 뒤 큰별(노랑)오브젝트를 추가해줍니다.

 

큰별 추가하기

그 후 높이를 최고점수 글상자의 높이와 비슷하게 해 주시고 옆에 배치해줍니다.

 

큰별 배치하기

마지막으로 게임 장면으로 다시 되돌아가기 위한 버튼 오브젝트를 하나 추가해줍니다. 오브젝트 추가하기에서 인터페이스내에 보시면 다시하기 버튼 오브젝트가 보입니다. 그 오브젝트를 추가해줍니다.

 

다시하기 버튼 추가하기

그리고 다음과 같이 크기를 수정하고 배치해줍니다.

 

다시하기 버튼 크기 및 위치 수정

오브젝트 생성 및 배치가 완료되었습니다. 본격적으로 코딩을 해볼까요? 

 

우선 점수 부분부터 해결해보도록 하겠습니다. 두 가지의 점수가 존재합니다. 최고 점수와 이전 게임의 점수.

점수숫자 글상자 부분에는 점수 변수에 저장되어 있는 숫자가 나오도록 하면 되겠네요. 아래와 같이 코딩하면 해결할 수 있을 것 같습니다.

 

점수숫자 코딩

엔딩 장면이 시작되었을 때 첨수가 표시되면 되기 때문에 장면이 시작되었을때 블록을 사용하면 되겠죠?

그렇다면 최고점수 글상자 부분에는? 최고점수라는 변수가 필요할 듯 하네요. 변수를 생성해줍니다. 그리고 화면에 보이지 않게 설정해줍니다.

 

최고점수 변수 생성
화면에 안보이게 설정

최고 점수는 최고점수숫자 글상자에 출력되면 됩니다. 그런데 최고 점수를 결정하는 방법을 생각해 보고 코딩을 해야겠죠? 최고 점수의 원리는 다음과 같습니다.

 

만약 최고점수 변수 값 < 점수 변수 값 이라면
    최고점수 변수 값을 점수 변수 값으로 정하기

좀 더 있어보이게 표현한다면?

if 최고점수 < 점수:
    최고점수 = 점수

위에 있는 것처럼 표현하는 것을 의사코드라 부릅니다 ㅎㅎ

무튼 위에 표현처럼 코딩을 진행해봅니다.

 

최고점수숫자 코딩

짜잔! 최고 점수를 표시할 수 있게 되었습니다. 하지만 한 가지 더 코딩을 해야합니다. 바로 큰별(노랑) 오브젝트의 등장인데요. 이 오브젝트는 최고 점수가 갱신되었을때만 화면에 나타나야 됩니다. 그렇다면 우선 장면이 시작되었을 때는 안보여야 되겠죠? 그러다가 최고 점수가 갱신되었음을 확인하였을 때 보여지도록 설정하면 됩니다. 확인하는 방법으로는 신호를 통해 하면 좋겠죠? 최고점수갱신이라는 신호를 만들어줍니다.

 

최고점수갱신 신호 생성

뭔가 복잡해 보이지만 코드를 보면 아~ 그렇구나 하고 바로 이해하실 수 있을 겁니다. 큰별(노랑) 오브젝트를 선택한 뒤 코딩을 합니다.

 

큰별(노랑) 오브젝트 코딩

그 다음 최고점수숫자 글상자에 최고점수갱신 신호를 보내주는 블록을 추가해줍니다.

 

최고점수숫자 코드 수정

 

생각보다 훨씬 간단하죠? 이렇게 점수 부분에 대한 코딩이 완료되었습니다. 마지막으로 다시하기 버튼 오브젝트 코딩과 엔딩 장면으로 이동하는 코딩을 해보겠습니다.

 

우선 다시하기 버튼 오브젝트를 클릭하여 코딩을 진행합니다. 이 오브젝트를 클릭하였을 때 게임 장면으로 다시 돌아가면 되는 아주 간단한 코딩입니다. 하지만 또 한가지 추가해야 하는 부분이 있습니다. 바로 점수 변수입니다. 게임을 다시 시작하였을 때 0점부터 다시 시작해야겠죠? 점수 변수 값을 0으로 정해줍니다.

 

다시하기 버튼 오브젝트 코딩

게임 장면으로 다시 이동하여 코딩합니다. 로켓 오브젝트를 클릭해준 뒤 로켓충돌확인 함수 부분을 수정할 것입니다. 기존 코드는 <게임오버를 2초 동안 말하기> 블록과 <모든 코드 멈추기> 블록이 들어있는데 이를 제거하고 엔딩 장면으로 이동하는 블록을 넣어주면 됩니다.

 

로켓 오브젝트 코드 수정

이렇게 엔딩 장면을 완성하였습니다.

포스팅을 마치기 전에 약간의 소소한 팁을 드리자면 최고점수숫자 글상자점수숫자 글상자의 글자크기가 달라 점수들이 보여질 때 약간 보기 안좋을 수도 있습니다. 그래서 저는 아래와 같이 수정하였습니다.

 

글상자 수정

오브젝트의 이름은 점수숫자와 최고점수숫자로 동일하지만 보여지는 글자만 점수숫자로 동일하게 표기하였습니다. 이렇게 하면 각각의 점수가 표시될 때 같은 크기로 출력되게 됩니다.

 

다음 포스팅에서는 상점 장면을 만들어 보도록 하겠습니다.

이상으로 포스팅을 마치겠습니다.

감사합니다:)

반응형