Iphone Fmod侦听器位置
在Fmod中,3D声音世界中的不同位置是否可能有多个声音?我想画出这个3D世界中的所有声音,并在播放器周围移动Iphone Fmod侦听器位置,iphone,fmod,Iphone,Fmod,在Fmod中,3D声音世界中的不同位置是否可能有多个声音?我想画出这个3D世界中的所有声音,并在播放器周围移动 我正在为iPhone开发。若要在3D位置放置频道或事件,请使用channel::set3DAttributes或event::set3DAttributes,这些函数将获取3D世界位置和方向向量 如果您想在3D世界中“漫游”,则需要使用System::Set3DListenerAttribute或EventSystem::Set3DListenerAttribute调整侦听器位置(取决
我正在为iPhone开发。若要在3D位置放置频道或事件,请使用channel::set3DAttributes或event::set3DAttributes,这些函数将获取3D世界位置和方向向量 如果您想在3D世界中“漫游”,则需要使用System::Set3DListenerAttribute或EventSystem::Set3DListenerAttribute调整侦听器位置(取决于您使用的是FMOD低级API还是FMOD事件系统API。这些函数采用位置向量、速度向量、正向向量和向上向量
我建议参考FMOD附带的3D示例,并检查fmodex.chm以了解有关上述功能的更多详细信息。以下代码允许我将在FMOD Designer中生成的若干声音放入FMOD的3D世界中:
FMOD_RESULT result = FMOD_OK;
FMOD_VECTOR listenerpos = { 0.0f, 0.0f, 1.0f };
FMOD_VECTOR eventpos = { 0.0f, 0.0f, 1.0f };
FMOD_VECTOR eventpos2 = { 0.0f, 0.0f, 1.0f };
float DISTANCEFACTOR = 2.0f;
事件1是我想在3D世界中播放的声音之一:
result = group->getEvent("Event 1", FMOD_EVENT_DEFAULT, &event1);
ERRCHECK(result);
事件2是我想在相同的声音场景中放置的另一个事件:
result = group->getEvent("Event 2", FMOD_EVENT_DEFAULT, &event2);
ERRCHECK(result);
我把听者的位置放在这个世界的中间:
listenerpos.x = 0;
listenerpos.y = 0;
listenerpos.z = 0;
result = eventSystem->set3DListenerAttributes(0, &listenerpos,NULL,NULL,NULL);
ERRCHECK(result);
我将其中一个事件的位置设置为我在iPhone屏幕上移动的对象:
eventpos.x = xPos;
eventpos.z = yPos;
result = event1->set3DAttributes(&eventpos,&vel);
ERRCHECK(result);
我将另一个事件设置到另一个位置:
eventpos2.x = xPos2;
eventpos2.y = yPos2;
result = event2->set3DAttributes(&eventpos2,&vel);
ERRCHECK(result);
整个事件系统和3D世界将使用以下位置进行更新:
result = eventSystem->update();
ERRCHECK(result);
我触发这两个事件,并听到它们如何在听者周围移动:
result = event1->start();
ERRCHECK(result);
result = event2->start();
ERRCHECK(result);
我使用了Fmod中的一个示例,但不清楚我是否可以定位多个声音。是的,您可以定位任意数量的声音。每个Fmod::Channel表示Fmod::sound的一个播放实例,您可以多次播放同一声音以接收多个频道,每个频道都可以定位。