• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

엔진음과 포탄음이 동시에 재생되지 않는 문제해결

21.04.15 17:03 작성 조회수 119

0

아래와 같이 SoundEngine_Singleton.h의 void playSound(const std::string & sound_name)함수에 const bool& _simultaneus=false 파라메타를 추가하였고 
if (!_simultaneus) 
	if (is_playing) return;
위와 같이 조건을 추가하여 포탄에 대해서만 중첩된 사운드가 재생되게 하였습니다.

포탄을 연속으로 쏘면 의도한 대로 포탄효과음이 연속으로 잘 재생 됩니다.(missile음은 제거하였음) 
하지만 탱크를 움직이면서 (엔진음이 나는 상태에서) 포탄이 연속으로 발사되면 소리가 잘 나지 않는 문제가 발생합니다.

엔진음이 재생중인 상태에서 새로이 포탄음이 재생되지 못하게 되는것 같은데... 
어떻게 해결방법에 접근해야 할런지 가르침을 부탁드립니다.
void playSound(const std::string & sound_name,const bool& _simultaneus=false)
{
	if (sound_map.count(sound_name) <= 0) {
		std::cout << sound_name << " isn't initialized." << std::endl;
		exit(-1);
	}

	const auto & sound_ptr = sound_map[sound_name];
	auto & channel_ptr = channel_map[sound_ptr];

	bool is_playing = false;
	result = channel_ptr->isPlaying(&is_playing);
	if (!_simultaneus) // play overlabed sound at the same time
		if (is_playing) return; // don't play if this is already playing

	result = system->playSound(sound_ptr, 0, false, &channel_ptr);

	if (result != FMOD_OK) {
		std::cout << "system->playSound() fail" << std::endl;
		exit(-1);
	}
}

답변 1

답변을 작성해보세요.

0

안소님의 프로필

안소

2021.04.17

안녕하세요.

제가 교수님대신 답변 드리는 일을 하고 있는데, 이 <게임 만들기 연습 문제 패키지> 강의는 제가 수강한지 오래되어 많이 까먹은 상태입니다. 😅 그래서 뭔가 세세하게 짚어드리기엔 제가 다시 공부를 하고 코드를 전부 리뷰해야하는 상황이네요 ㅠㅠ 

그렇지만 이 강의를 수강할 때 대부분의 연습문제를 풀이하여 블로그에 정리해놨었는데요, 질문 주신 내용인 "탱크가 엔진음을 내며 이동하는 상태에서 동시에 포탄음을 내는" 것도 구현하여 코드와 결과 유튜브로 포스팅해놓은 적이 있습니다.

https://ansohxxn.github.io/c++%20games/chapter1-5-prac/

제 블로그의 해당 포스트 링크입니다. 엔진음 내면서 포탄 쏘는 부분에 대한 구현 코드를 정리해놓았으니 코드 참고해보셨으면 좋겠습니다! 잘 해결 되셨으면 좋겠네요