[안드로이드 게임 개발] 사운드

 

어떤 종류의 게임이건 사운드는 필수요소라고 할수 있는데요. 정말 재미있는 게임도 sound가 없으면 재미가 반감되겠죠. sound는 게임을 구성하는 요소 중굉장히 중요한 위치를 차지 합니다. 안드로이드 플랫폼에서는 일반적인 미디어파일에 대한 인코딩과 디코딩을 제공하므로 오디오 파일을 게임에 쉽게 통합 할 수 있습니다.

 

■ 다음과 같은 형식의 프로그램을 만들어보면서 sound를 넣는 과정을 살펴보도록 하겠습니다.

1. 실행하면 배경음악이 흘러나옵니다.

2. 스페이스를 누르면 배경음악이 멈추고 다시 한번 누르면 재생이 됩니다.

3. 방향키를 누르면 효과음을 재생합니다.

 

 먼저 기본 프로젝트를 생성하고 메인 액티비티와 view를 상속받은 SoundExam클래스를 만들어서다음과 같이 기본 코딩을 하겠습니다.

 

 

 

 

 다음으로 재생에 필요한  파일을 리소스 폴더를 하나 만들어서 그곳에 옮기도록 할게요. 다음과 같이 Package Explorer에서 res 폴더내에 raw폴더를 하나 만들겠습니다.

 

 

 raw폴더를 만들고 바탕화면에 준비해 놓았던 파일 세개를 드래그 해서 폴더 안으로 넣겠습니다.

 이제 준비가 다 됐으니 재생하는 방법을 살펴보도록 하겠습니다. 파일을 재생하는 방법은 두가지가 있는데요.

 

■ MediaPlayer을 이용하는 방법

SoundPool을 이용하는 방법

 

이번 포스팅에서는 MediaPlayer을 이용하는 방법을 알아보도록 할게요.

 

 음악은 비트맵(그림)과는 다르게 사용할 때마다 호출을 하면 예외가 발생하기 때문에반드시 로드할 때와 사용할 때를 구분해서 사용해야 합니다. 때문에 멤버 변수를 사용해서재생하도록 하겠습니다.  여기서는 MediaPlayer로 재생할 것이므로 MediaPlayer를 변수로선언하도록 하겠습니다.

 

 

 다음으로는  사운드 리소스를 불러와서 멤버 변수에 이를 할당해야 합니다. 할당하는 방법은 다음과 같습니다.

 

■ sound = MediaPlayer.create(context, R.raw.불러올 사운드 파일);

 

이렇게 불러온 파일의 재생은 아주 간단합니다. 

■ sound.start() 

 

 이제 본격적으로 재생하는 과정을 코딩 해보겠습니다.  우선 배경음악은 생성자에서 실행하게 하고, 방향 키 왼쪽과 오른쪽 버튼으로 재생할 수 있게 onKeyDown메서드를 오버라이딩 해서 코드를 작성해보도록 하겠습니다.

 

 

 키입력을 받기 위해서 setFocusable(true)를 추가했습니다.  이제 실행을 해보면 배경음악이 나오고 키보드 오른쪽, 왼쪽 키를 누르면 sound1과 sound2의 효과음이 재생이 됩니다.

 

다음으로 스페이스 바를 누르면 배경음악이 멈췄다가 다시 재생되는 기능을 구현해 보겠습니다.

 

 위와같이 코딩을 하고 실행을 해보면 스페이스 바를 한번 누르면 일시정지가 됩니다. 하지만 다시 누른다고 해서 음악이 재생되지는 않습니다. 위에서는 음악을 멈추는 쿠드만 추가했기 때문입니다.

 

SPACE바를 누르는 시점에 재생중이면 멈추게 하고 , 멈춰있는 상태이면 재생을 시켜야 합니다.재생이 되고 있는지 여부는 MediaPlayer.isPlaying() 메서드를 이용해서 확인 할 수 있습니다. 이 메서드는 호출한 객체가 재생중이라면 true를 재생중이 아니라면 false를 반환하는 메서드 입니다.

 

 다음과 같이 코드를 수정하면 재생중일때는 정지가 되고, 정지되어 있는 상태라면 다시 재생을 하게 됩니다.

Leave a comment
Your name *
Your PassWord *
Comment *
COMMENT