Fmod позиция слушателя - PullRequest
1 голос
/ 01 июля 2011

Возможно ли иметь несколько звуков в разных местах в мире трехмерного звука в Fmod?Я хотел бы подготовить все звуки в этом трехмерном мире и перемещаться по игроку.

Я разрабатываю для iPhone.

Ответы [ 2 ]

0 голосов
/ 07 июля 2011

Следующий код позволил мне поместить несколько звуков, которые были превращены в события в Fmod Designer, в трехмерный мир Fmod:

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 - это один из звуков, которые я хочу разместить в своем 3Dworld:

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

Вся система событий и трехмерный мир обновляются с помощью следующих позиций:

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

Я запускаю 2 события и слышу, как они перемещаются вокруг слушателя:

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

result = event2->start();
ERRCHECK(result);
0 голосов
/ 01 июля 2011

Чтобы разместить канал или событие в трехмерном местоположении, используйте Channel :: set3DAttributes или Event :: set3DAttributes, эти функции принимают трехмерное мировое положение и вектор направления.

Если вы хотите "пройти"В трехмерном мире вам необходимо настроить положение слушателя с помощью System :: set3DListenerAttributes или EventSystem :: set3DListenerAttributes (в зависимости от того, используете ли вы низкоуровневый API FMOD или API системы событий FMOD. Эти функции принимают вектор положения, вектор скоростивперед и вектор вверх.

Я рекомендую обратиться к 3D-примеру, который поставляется с FMOD, и проверить fmodex.chm для получения более подробной информации о вышеупомянутых функциях.

...