Мне интересно, делаю ли я что-то не так.Я настроил свой класс SoundManager так, чтобы в нем было 5 разных каналов, в моей игре некоторые звуки могут воспроизводиться одновременно, например, стреляя из пистолета и звуки, издаваемые противником ... Вот как я настраивал FMOD иЯ вызываю функцию для воспроизведения звуков таким образом, чтобы они всегда перематывались на начало:
void SoundMgr::init(){
System_Create(&fmodsys);
fmodsys->init(5, FMOD_INIT_NORMAL, 0)
}
void SoundMgr::play(string name, int chan){
if(chan == 1){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn1);
chn1->setMode(FMOD_LOOP_OFF);
chn1->setPosition(0, FMOD_TIMEUNIT_PCM);
chn1->setPaused(false);
} else if(chan == 2){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn2);
chn2->setMode(FMOD_LOOP_OFF);
chn2->setPosition(0, FMOD_TIMEUNIT_PCM);
chn2->setPaused(false);
} else if(chan == 3){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn3);
chn3->setMode(FMOD_LOOP_OFF);
chn3->setPosition(0, FMOD_TIMEUNIT_PCM);
chn3->setPaused(false);
} else if(chan == 4){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn4);
chn4->setMode(FMOD_LOOP_OFF);
chn4->setPosition(0, FMOD_TIMEUNIT_PCM);
chn4->setPaused(false);
} else if(chan == 5){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn5);
chn5->setMode(FMOD_LOOP_OFF);
chn5->setPosition(0, FMOD_TIMEUNIT_PCM);
chn5->setPaused(false);
}
}
И в игре, которую я имею (это всего лишь пример, но это происходит с большинством звуков):
....
sMgr->play("gunshot", 1);
....
sMgr->play("rat_hurt", 3);
...
Однако результат очень случайный: два звука воспроизводятся редко одновременно, тогда как в большинстве случаев воспроизводится только один из двух ...
Также у меня есть режим циклического воспроизведения:
void SoundMgr::playRepeat(string name, int chan){
if(chan == 1){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn1);
chn1->setMode(FMOD_LOOP_NORMAL);
chn1->setPosition(0, FMOD_TIMEUNIT_PCM);
chn1->setPaused(false);
} else if(chan == 2)
....
Но это тоже случайно прерывается другими нецикличными звуками, даже если они воспроизводятся на разных каналах?
Буду очень признателен за любую помощь, которую вы сможете оказать
Заранее благодарим за любую помощь, которую вы можете оказать.