1

Fmod の 3D サウンド ワールドの異なる場所に複数のサウンドを配置することは可能ですか? この 3D ワールド内のすべてのサウンドをプロットして、プレーヤーの周りを移動したいと考えています。

私はiPhone用に開発しています。

4

2 に答える 2

0

次のコードを使用すると、FmodDesignerでイベントに作成されたいくつかのサウンドを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の世界に配置したいサウンドの1つです。

result = group->getEvent("Event 1", FMOD_EVENT_DEFAULT, &event1);
ERRCHECK(result);

イベント2は、同じサウンドランドスケープに配置したいもう1つのイベントです。

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);

イベントの1つの位置を、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);

2つのイベントをトリガーし、それらがリスナー内をどのように移動するかを聞きます。

result = event1->start();
ERRCHECK(result);

result = event2->start();
ERRCHECK(result);
于 2011-07-07T10:03:00.660 に答える
0

チャネルまたはイベントを3Dの場所に配置するには、Channel::set3DAttributesまたはEvent::set3DAttributesのいずれかを使用します。これらの関数は、3Dワールド位置と方向ベクトルを取ります。

3Dの世界を「歩き回る」場合は、System::set3DListenerAttributesまたはEventSystem::set3DListenerAttributesのいずれかを使用してリスナーの位置を調整する必要があります(FMOD低レベルAPIまたはFMODイベントシステムAPIのどちらを使用しているかによって異なります。これらの関数は位置ベクトル、速度ベクトル、前方ベクトル、上方ベクトル。

上記の関数の詳細については、FMODに付属の3Dの例を参照し、fmodex.chmを確認することをお勧めします。

于 2011-07-01T00:35:19.570 に答える