Мне интересно, если я делаю что-то неправильно. Я настроил свой класс 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)
....
Но это также случайно прерывается другими незацикленными звуками, даже если они воспроизводятся на разных каналах?
Я был бы очень признателен за любую помощь, которую вы можете предоставить
Заранее благодарим вас за любую помощь, которую вы можете оказать.