본문 바로가기
Programming/Entry

엔트리(entry)로 비행기 슈팅게임 만들기 - 14. 난이도 적용하기1

by BACKK0M 2019. 11. 21.
반응형

이번 포스팅에서는 난이도를 적용해보고자 합니다. 일정 시간이 지나면 난이도가 올라가며, 적들이 점점 많이 생성되도록 할 것입니다. 난이도 적용 과정은 총 3번에 걸쳐 진행되며, 이번 포스팅에서는 난이도 3까지 제작하고자 합니다.

 

난이도는 기획했던대로 30초가 지나면 자동으로 올라가도록 코딩할 것입니다. 난이도에 대한 정보를 저장하기 위해 변수가 필요하겠죠? 난이도 변수를 하나 생성해줍니다.

 

난이도 변수 생성

변수를 생성한 뒤 변수의 정보가 안보이도록 설정해줍니다.

 

변수 정보 안보이게 하기

게임 장면에 코딩을 하도록 하겠습니다. 우선 운석오브젝트를 보면 0.1~0.8초 사이에 한 번씩 복제되어 생성되도록 코딩하였습니다. 이것을 난이도에 따라 생성되는 주기를 달리 해보도록 하겠습니다.

 

우선 난이도의 정보를 화면에 보여주기 위해 글상자 2개를 생성하도록 하겠습니다. 난이도:라는 이름을 갖는 글상자와 난이도숫자라는 이름을 갖는 글상자를 각각 만들어줍니다.

글자 색상, 채도, 명도는 각각 0, 100, 100으로 하며, 글상자 배경색은 투명으로 설정해줍니다.

 

글자 색상
글상자 배경색

글상자를 만들어준 뒤 점수 아래 부분에 배치해줍니다(원하는 곳에 배치하시면 됩니다!).

 

난이도 관련 글상자 배치

게임 장면이 시작되면 난이도를 1로 시작하게 되고, 난이도숫자 글상자에 난이도 변수의 값을 써주어 플레이어가 난이도를 확인할 수 있게 해주어야 합니다. 아래와 같이 난이도숫자 글상자에 코딩을 진행합니다.

 

초기 난이도 설정

난이도가 증가하는 조건은 바로 30초가 지났을 경우에 난이도 값이 증가한다 하였습니다. 시간이 지났는지 확인하기 위한 방법으로는 무엇이 있을까요?

 

바로바로... 초시계 블록입니다!(스크래치에서는 타이머 블록입니다) 초시계 블록을 이용하여 30초가 지났는지 측정하고, 30초가 지났을 때 난이도를 증가시켜줍니다. 주의할 점은 초시계 블록을 사용하면 화면에 시간 정보가 나타나게 됩니다. 이를 숨기기 블록을 이용하여 보이지 않도록 해주어야 합니다. 우선 이번에는 난이도 3까지만 만들기로 했기 때문에 난이도 3이하인 동안에만 난이도가 증가되도록 코딩해야 합니다. 아래와 같이 코딩을 진행합니다. 

 

난이도 증가시키기

블록에 보시면 가장 중요한점은 바로 초시계 초기화하기 입니다. 30초가 지난 뒤 난이도를 1 증가시켜주고, 초시계를 초기화해줍니다. 그 이유는 초시계값이 30보다 커지고 나서 다시 30초를 측정해야 하기 때문이죠. 이제 난이도숫자 글장사에 난이도 표시가 잘 될겁니다. 그러면 실제로 난이도 대로 게임이 진행되도록 코딩을 해야겠죠? 운석오브젝트에 코딩을 해봅시다.

 

위에서 언급한바와 같이 0.1~0.8초 마다 복제되어 생성되도록 코딩이 되어 있습니다.

운석오브젝트 생성 부분

이 부분을 수정해야 합니다. 바로 난이도에 따라 달리 운석 오브젝트가 생성되도록 해야하죠. 아래와 같은 원리로 운석 오브젝트를 생성하고자 합니다.

 

0.1 ~ (3 / 난이도값) 마다 운석오브젝트 생성하기

 

위의 수식을 사용한다 하였을 때 난이도가 증가함에 따라 운석오브젝트가 얼마나 생성되는지 알아볼까요?

난이도 생성 주기
1 0.1 ~ 3초
2 0.1 ~ 1.5초
3 0.1 ~ 1초
4 0.1 ~ 0.75초
5 0.1 ~ 0.6초
6 0.1 ~ 0.5초
7 0.1 ~ 0.42초
8 0.1 ~ 0.375초
9 0.1 ~ 0.33초

처음 난이도 1, 2, 3에는 운석 오브젝트가 많이 나오지 않을 것입니다. 하지만 난이도가 증가함에 따라 점점 많이 생성되는 것을 확인할 수 있습니다. 위의 공식대로 코딩을 진행해봅니다.

 

난이도를 적용하여 생성하기

난이도 1 ~ 3까지 적용이 완료되었습니다. 다음 포스팅에서는 난이도 4 ~ 6 까지 적용해보도록 하겠습니다.

감사합니다 :)

반응형