목차
스타팅 파일
- Flappy Bird에 그림 입히기에서 이어지는 강의다.
- Flappy Bird에 그림입히기 파일을 다운 받아서 프로젝트를 시작하자.
오디오 기본 : 점프 효과음 만들기
위 스타팅 프로젝트 파일에는 에셋폴더에 jump.wav라는 효과음이 첨부되어 있다. 이를 이용할 것이다.
1. 오디오 디바이스 연결하기와 연결 끊기
main.cpp에서 게임창을 초기화하였으므로 바로 이어서 오디오도 초기화하자
가. 오디오 초기화
main.cpp에서 게임창을 만든 직후에 오디오를 초기화하자
// 게임창 만들기 SetTargetFPS(60); // Set our game to run at 60 frames-per-second InitWindow(screenWidth, screenHeight, "Flappy Bird"); // 오디오 디바이스 초기화하기 InitAudioDevice(); // Initialize audio device
나. 오디오 닫기
CloseWindow() 바로 전에 오디오를 닫는 함수를 부르자. while문이 종료된 다음에 불러와야 할 것이다.
CloseAudioDevice(); // Close audio device CloseWindow(); // Close window and OpenGL context return 0;
2. 사운드 선언 및 실행
가. bird.h
bird.h에 다음과 같이 점프에 사용할 사운드를 선언한다.
Sound fxJump; // Load WAV audio file
나. wave파일 할당하기
bird.cpp에서 Init문에서 사용할 wave파일을 할당하면 된다/
void Bird::Init() { // 최초의 포지션 정하기 pos = {150, float(GetScreenHeight()) / 2} ; // 그림으로 넣기 birdImage = LoadTexture("Assets/birddrawing.png"); // Texture loading fxJump = LoadSound("Assets/jump.wav"); }
다. 사운드 파일 메모리에서 해제 하기
끝나면 사운드 파일을 메모리에서 해제하는 것을 잊지 말자
Bird::~Bird() { UnloadTexture(birdImage); // Texture unloading UnloadSound(fxJump); // Unload sound data }
라. 사운드 사용하기
PlaySound()함수를 사용하면 된다. 쉽다.
void Bird::Jump() { downSpeed = -jumpSpeed; PlaySound(fxJump); // Play WAV sound }
3. 활용
이제 이것을 활용하여 플레이어가 장애물에 부딪히면 다치는 사운드도 만들어 보자.
그런데 Assets폴더에는 mp3로 되어 있다. 이것은 ConvertIO와 같은 변환사이트에서 변환하면 된다.
변환한 후에 해당 wav파일을 위와 똑같이 PlaySound()함수로 활용하면 된다.
이런 식으로 나머지 효과음도 집어 넣자. 나는 이렇게 코딩했다.
// 플레이어가 데미지를 입는 메서드 void Bird::Hurt() { Life--; SetInvincible(true); if (Life > 0) PlaySound(fxHurt); else PlaySound(fxExplosion); }
음악 연주하기
1. 음악 파일 선언
game.h에 음악파일을 선언한다.
Music music;
2. 음악 할당하기
game.cpp에서 Init()함수 내에 다음과 같이 음악을 할당한다.
// 배경음악 플레이 할당하기 music = LoadMusicStream("Assets/country.mp3"); PlayMusicStream(music);
3. 메모리 해제하기
다음을 항상 잊지 말자
Game::~Game() { UnloadTexture(backgroundImage); UnloadMusicStream(music); // Unload music stream buffers from RAM pipes.clear(); }
4. 뮤직 스트림 업데이트 하기
Update()루프에서 Switch 문 위에 다음과 같이 뮤직 스트림을 업데이트 하는 함수를 실행한다.
이래야만 음악이 연주된다.
// Update UpdateMusicStream(music); // Update music buffer with new stream data
4. 음악 일시정지와 재개
ResumeMusicStream() 함수와 PauseMusicStream() 함수를 이용하면 된다.
가. 정지 스위치 문
case Gamestate::pause : // 정지로직 if (IsKeyPressed(KEY_UP)) { gamestate = Gamestate::game; // 게임으로 돌아가기 ResumeMusicStream(music); } if (gamestate == Gamestate::pause && IsKeyPressed(KEY_ESCAPE) ) Manager->gameExit = true; // 정지상태일때, ESC 누르면 종료 break;
나. 게임 진행 스위치 문
다음과 같이 ESC키를 누르면 일시정지 함수를 불러오면 된다.
case Gamestate::game : // 게임로직 // 키보드 입력 if (IsKeyPressed(KEY_ESCAPE)) { gamestate = Gamestate::pause; // 게임정지로 바꾸기 PauseMusicStream(music); }
로그인