내가 잘못하고 있는지 궁금합니다. 5 개의 다른 채널을 갖기 위해 SoundManager 클래스를 설정했습니다. 게임에서 총을 발사하고 적을 "상처를주는"소리처럼 동시에 재생할 수 있습니다 ... 이것은 FMOD를 설정하는 방법입니다. 기능 나는 그들이 항상 시작 되 감아되는 방식으로 사운드를 재생하기 위해 전화 :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);
...
그러나 두 개의 사운드가 동시에 거의 동시에 재생되는 경우 결과는 매우 랜덤합니다. 대부분의 경우 두 개의 재생 중 하나만 재생됩니다.
,210또한 나는 루프 모드가 있습니다
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)
....
을하지만 그건 너무 무작위로 다른 채널에서 재생할 경우에도, 다른 비 루핑 소리에 의해 중단?
은 정말 당신이
당신이 제공 할 수 있습니다 사전에 어떤 도움을 주셔서 감사합니다 제공 할 수있을 수있는 모든 도움을 주셔서 감사합니다 것입니다.
감사합니다. 채널이 제대로 작동하지 않는 이유를 알아 내면 기꺼이 고려해 볼만한 해결책입니다. – Alex