2011-07-05 109 views
0

我有一個事件叫做Numbers。在Fmod Designer中,事件根據listenerAngle播放不同的數字。我希望能夠在3D空間中定位此事件時聽到不同的聲音。這是我目前的代碼。它只播放我的應用程序中的一個數字。我錯過了什麼嗎?在3D中播放fmod事件聲音

FMOD_RESULT   result  = FMOD_OK; 
    FMOD_VECTOR   listenerpos; 
    FMOD_VECTOR   forward   = { 0.0f, 0.0f, 1.0f }; 
    FMOD_VECTOR   up    = { 0.0f, 1.0f, 0.0f }; 
    FMOD_VECTOR   vel    = { 0.0f, 0.0f, 0.0f }; 

    result = group->getEvent("Numbers", FMOD_EVENT_DEFAULT, &event); 
     ERRCHECK(result); 

    listenerpos.x = 0.436243; 
    listenerpos.y = -0.43643; 
    listenerpos.z = -6; 

    result = eventSystem->set3DListenerAttributes(0, &listenerpos, &vel, &forward, &up); 
    ERRCHECK(result); 

幫助非常感謝!謝謝!

回答

0

我添加了一些行,並得到它的工作。我不得不在3D世界中放置事件。

FMOD_RESULT result = FMOD_OK; 
FMOD_VECTOR listenerpos = { 0.0f, 0.0f, 1.0f }; 
FMOD_VECTOR eventpos  = { 0.0f, 0.0f, 1.0f }; 
float DISTANCEFACTOR   = 2.0f; 

result = group->getEvent("Numbers", FMOD_EVENT_DEFAULT, &event); 
ERRCHECK(result); 

listenerpos.x = 0; 
listenerpos.y = 0; 
listenerpos.z = 0;  

result = eventSystem->set3DListenerAttributes(0, &listenerpos,NULL,NULL,NULL); 
ERRCHECK(result); 

eventpos.x = xPos; // Object's x position on iPhone I move around 
eventpos.z = yPos; 


result = event->set3DAttributes(&eventpos2,&vel); 
ERRCHECK(result); 

result = eventSystem->update(); 
ERRCHECK(result); 

result = ballEvent->start(); 
ERRCHECK(result); 
0

也許你的「數字」事件是2D?你可以檢查並確保它是3D的。

+0

聲音是3D,但我不得不添加這些線,現在它的工作原理:eventpos.x = xPos; eventpos.z = yPos; result = event-> set3DAttributes(&eventpos2,&vel); ERRCHECK(result); –