본문 바로가기
Programming/Entry

엔트리(entry)로 비행기 슈팅게임 만들기 - 18. 효과음 적용하기

by BACKK0M 2019. 12. 12.
반응형

이번 포스팅에서는 게임 내에서 소리가 나도록 코딩해보고자 합니다. 우선 효과음을 적용하기 전에 외계인 오브젝트가 난이도에 맞지 않게 나오는 부분을 수정하고 넘어가도록 하겠습니다.

 

난이도가 4가 넘은 상태에서 죽었을 때 엔딩 장면으로 넘어가고 다시 게임 장면으로 넘어가게 됩니다. 그 때 문제가 발생하게 됩니다. 아래의 두 블록들을 살펴봅니다.

 

외계인 오브젝트
난이도숫자 글상자

난이도가 4였을 때 플레이어가 게임오버가 되었다 가정한다면 재시작하였을때 난이도의 변수 값은 4로 되어 있을 것입니다. 장면이 시작되었을때 외계인 오브젝트 및 난이도숫자 글상자는 동시에 난이도 라는 변수의 값을 사용하게 됩니다. 이때 문제가 발생하게 되는 것이지요. 글상자에서 난이도의 값이 1로 바뀌기 이전에 외계인 오브젝트에서 난이도가 4가 될까지 블록이 실행되고, 복제본이 생성되게 될것입니다. 곧바로 난이도 변수의 값은 1로 바뀌겠지요. 즉, 난이도가 1일때부터 외계인 오브젝트가 등장하게 되는 것입니다. 

 

이 문제를 해결하기 위한 방법은 정말 간단합니다. 바로 기다리기 블록을 사용하는 것이지요. 아래와 같이 외계인 오브젝트에 기다리기 블록을 사용해줍니다.

 

외계인 오브젝트 기다리기 블록 사용

위와 같이 기다리기 블록을 사용하게 되면 게임이 재시작되었을때 난이도 변수의 값이 1로 바뀌고나서 난이도 변수의 값이 4인지를 확인하게 될것입니다.

 

이제 본격적으로 오늘 할 내용인 효과음을 넣어보도록 할까요? 효과음 목록은 다음과 같습니다.

 

No. 소리 내용 소리 목록
1 미사일 발사 판타지-전자신호음2
2 로켓 충돌 사물-비행기 추락
3 기본/동전/선풍폭탄

기본: 사물-탱크 포화 소리

동전: 사물-병뚜껑 따는 소리

선풍:  자연-고요한 바람소리

4 운석/작은 별 제거 사물-탱크 포화 소리2
5 외계인 제거 사람-남자 비명
6 보스 등장 사물-위험 경고
7 보스 타격 악기-높은 봉고
8 보스 제거 사물-폭탄 폭발

총 10가지의 소리를 사용할 것입니다. 그런데 소리들 중에 길이가 긴 것들이 여러 개 존재하여, 소리를 약간 수정하여 사용해야 합니다. 그러면 하나씩 해보도록 하겠습니다.

 

미사일 발사 소리부터 적용해봅니다. 미사일 오브젝트를 선택해줍니다. 사용할 소리를 추가해줍니다.

 

소리 추가하기
전자신호음2 소리

 

소리 블록 중에 재생하기 블록을 선택하여 스페이스키가 눌렸을 때 안에다가 배치해줍니다.

 

미사일 발사 소리

이번에는 로켓이 충돌하였을 때 소리를 내보도록 하겠습니다. 엔딩 장면으로 이동하여 단색 배경 오브젝트를 선택한 뒤 소리를 추가해줍니다.

 

비행기 추락 소리

그리고 단색 배경 오브젝트에 돈계산 신호를 받으면 소리가 재생되도록 코딩해줍니다.

 

로켓 충돌 초리

이번에는 기본/동전/선풍폭탄에 대한 소리를 추가해보도록 하겠습니다. 게임 장면으로 이동하여 기본폭탄 오브젝트를 선택해줍니다. 그 후 탱크 포화 소리를 추가해줍니다.

 

탱크 포화 소리

기본폭탄이 발사되면 소리가 나도록 재생하기 블록을 추가해줍니다. 복제본이 생성되었을 때 바로 소리를 재생해주면 됩니다.

 

기본폭탄 발사 소리

동전폭탄 오브젝트를 선택하고, 병뚜껑 따는 소리를 추가해줍니다.

 

병뚜껑 따는 소리

기본폭탄과 마찬가지로 복제본이 생성될 때 소리가 나도록 재생하기 블록을 복제본이 생성되었을 때 블록 아래에 붙여줍니다.

 

동전폭탄 발사 소리

선풍폭탄 오브젝트를 선택하고, 고요한 바람소리를 추가해줍니다. 

 

고요한 바람소리

다른 폭탄들과는 달리 소리가 길기 때문에 복제본이 생성될때마다 소리를 내는 것이 아닌 버튼이 눌려 발사 명령(신호)를 받았을 때 한 번 소리가 나도록 설정해줍니다. 아래와 같이 선풍폭탄발사 신호를 받았을 때 소리가 나도록 하며, 3초부터 8초까지 재생하기 블록을 추가해줍니다.

 

선풍폭탄 발사 소리

이번에는 운석과 작은 별 오브젝트가 제거될 때 나는 소리를 추가해보도록 하겠습니다. 운석작은 별 오브젝트에 각각 탱크 포화 소리2 소리를 추가해줍니다.

 

탱크 포화 소리2

두 오브젝트 모두 미사일 및 폭탄에 닿았을 때 소리가 나도록 재생하기 블록을 추가해줍니다.

 

운석 제거 소리
작은 별 제거 소리

외계인 오브젝트가 제거되었을 때 소리가 나도록 설정해보겠습니다. 외계인 오브젝트를 선택한 뒤 남자 비명 소리를 추가해줍니다.

 

남자 비명 소리

외계인 오브젝트에 미사일 및 폭탄이 닿았을 때 소리가 나도록 재생하기 블록을 추가해줍니다.

 

외계인 제거 소리

마지막으로 보스에 관한 소리를 추가해보도록 하겠습니다. 보스에서 나는 소리는 총 3가지로, 보스가 등장하였을 때, 타격 받았을 때, 제거되었을 때 입니다.  보스의 남은 체력을 적어주는 숫자 글상자로 이동하여 세 개의 소리를 추가해줍니다.

 

추가할 소리: 위험 경고, 높은 봉고, 폭탄 폭발

 

위험 경고 소리
높은 봉고 소리
폭탄 폭발 소리

보스출동! 신호를 받았을 때 위험 경고 소리를 재생해줍니다.

 

보스 등장 소리

보스체력-미사일 및 보스체력-폭탄 신호를 받았을 때 높은 봉고 소리를 재생해줍니다.

 

보스 타격 소리

마지막으로 보스 제거 소리를 추가해봅니다. 소리를 추가하기 전에 보스의 체력이 0이하가 되었을 때 게임이 끝나도록(모든 코드가 멈추도록) 설정해줍니다. 다음과 같은 순서로 진행될 것입니다.

 

1. 보스의 체력이 0 이하일 경우

2. 다른 오브젝트의 코드 멈추기

3. 소리 재생하고 기다리기

4. 모든 코드 멈추기

 

아래와 같이 코딩을 진행합니다.

 

보스 제거 소리

보스가 미사일과 폭탄 두 가지에 대해 제거될 수 있으므로 각 신호에 대해 모두 처리해주어야 합니다.

 

이렇게 계획했던 소리를 모두 추가해보았습니다. 이제 코딩의 마지막 과정인 오프닝 화면, 엔딩 크레딧 만들기만 남았습니다. 다음 포스팅에 마무리를 잘 짓도록 하겠습니다.

 

감사합니다 :)

반응형