본문 바로가기
Programming/Entry

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

by BACKK0M 2019. 11. 21.
반응형

이번 포스팅에서는 난이도 4 ~ 6까지 적용을 해보도록 하겠습니다.

 

난이도 4 ~ 6까지는 새로운 적 오브젝트를 생성할 것이며, 그 오브젝트들이 플레이어에게 다가올 것입니다.

우선 새로운 적 오브젝트를  생성하겠습니다. 오브젝트 추가하기에서 외계인을 추가하도록 하겠습니다.

 

외계인 오브젝트 추가하기

오브젝트를 생성한 뒤 크기를  40으로, y좌표 값을 195로 설정해줍니다. 그리고 모양을 숨겨줍니다.

 

외계인 오브젝트 설정하기

운석은 처음부터 끝까지 계속해서 생성되지만, 외계인은 난이도 4부터 등장합니다. 따라서 난이도가 현재 얼마인지 확인하고 4이상이 되었다면 등장하도록 코딩해야 합니다. 우선 난이도숫자 글상자의 코드를 수정합니다. 지난 포스팅에서는 난이도 4까지 증가되도록 코딩하였기 때문에 원래 기획했던대로 10까지 되도록 코드를 수정해줍니다.

 

난이도숫자 글상자 수정하기

외계인 오브젝트에 코딩을 진행해봅니다. 장면이 시작되면 난이도를 확인합니다. 난이도가 4 이상 되었을 때 복제본이 생성되도록 해줍니다. 복제본이 생성되는 주기는 0.1 ~ (6 / 난이도값) 으로 합니다.

 

외계인 오브젝트 복제본 만들기

복제본이 생성되면 로켓이 있는 쪽을 바라보고, 그 방향으로 이동하도록 코딩합니다. 그러면 운석과 달리 로켓이 있는 방향으로 날아오게 될겁니다. 운석오브젝트를 생성할 때와 마찬가지로 외계인의 x좌표 값을 -260 ~ 260 사이의 무작위 수로 정해줍니다. 아래와 같이 코딩을 진행합니다.

 

외계인 복제하고 움직이기

외계인 오브젝트도 운석과 마찬가지로 벽, 미사일, 폭탄에 닿았을 때 제거되도록 코딩해줍니다(0.1초 기다리기 후 복제본 제거하기를 해주셔야 합니다!).

 

외계인 오브젝트 충돌처리 하기

운석오브젝트와 다른 점은 벽과의 충돌처리를 할 때 왼쪽 벽과 오른쪽 벽에 대해서도 해주셔야 한다는 점입니다. 그 이유는 로켓이 있는 쪽으로 다가오기 때문에 양옆에 있는 벽에 닿을 경우도 생기겠죠? 그리고 운석오브젝트와 마찬가지로 미사일 또는 폭탄으로 제거했을 경우 점수를 획득할 수 있도록 신호를 보내주어야 합니다. 이제 이 점수는 운석오브젝트만 사용하는 것이 아니기 때문에 신호의 이름을 바꾸도록 하겠습니다. 신호 이름을 적오브젝트점수라 하겠습니다.

 

신호 이름 바꾸기

미사일 오브젝트 코드도 수정하도록 하겠습니다. 외계인 오브젝트에 닿았을 때 미사일이 제거되도록 해야겠죠? 추가할 내용은 다음과 같습니다.

1) 왼쪽 벽에 닿았을 때 제거

2) 오른쪽 벽에 닿았을 때 제거

3) 외계인 오브젝트에 닿았을 때 제거

 

1번과 2번 같은 경우는 예전 11편에서 총알 개수 업그레이드를 진행하였는데 위로 일직선으로 미사일이 날아가는 것이 아닌 양옆으로 날아가도록 코딩하였습니다. 그렇기 때문에 양옆으로 날아간 미사일 복제본을 제거해주기 위해 1, 2번이 추가로 필요한 것입니다. 아래와 같이 코딩을 진행합니다.

 

미사일 충돌처리 하기

마지막으로 로켓에 코딩을 진행하도록 하겠습니다. 마찬가지로 외계인에 닿았을 때 게임이 종료되도록 코딩합니다. 로켓의 충돌처리는 로켓충돌확인이라는 함수를 만들어 작성하였습니다. 그 함수로 들어가 아래와 같이 코딩을 진행해줍니다.

 

로켓-외계인 충돌 처리

만일 - 아니면 블록을 사용한 이유는 운석과 외계인에 동시에 닿을 경우도 생길 수 있고, 그렇게 되면 돈계산이 두번 일어날 수도 있기 때문입니다.

 

이렇게 난이도 4 ~ 6 까지 적용을 완료하였습니다. 다음 포스팅에서는 난이도 7 ~ 9 까지 적용해보도록 하겠습니다.

감사합니다:)

반응형