Отрегулируйте громкость звукового эффекта в зависимости от скорости столкновения. - PullRequest
1 голос
/ 14 апреля 2011

Я использую Cocos2D с Box2D, чтобы создать простую физическую игру. Я хочу отрегулировать громкость звукового эффекта столкновения в зависимости от скорости тела столкновения. Чем быстрее тело движется при столкновении, тем громче звук. Я использую библиотеку SimpleAudioEngine, которая имеет метод playSound с параметром усиления. Есть ли способ преобразовать скорость сталкивающегося тела (объект b2Body) в значение между 0 и 1, которое я могу применить к усилению?

1 Ответ

2 голосов
/ 14 апреля 2011

В функции пост-решения получить значение импульса, возможно, разделить его на 100?Я не уверен, какие уровни импульса вы получаете.

void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse)

{
    b2Fixture* fixtureA = contact->GetFixtureA();
    b2Fixture* fixtureB = contact->GetFixtureB();

    void* userDataA = fixtureA->GetBody()->GetUserData();
    CCNode *myActorA = (CCNode*)userDataA;
    void* userDataB = fixtureB->GetBody()->GetUserData();
    CCNode *myActorB = (CCNode*)userDataB;

            // stuff above will allow you to work out which objects are hitting each other

            // get the impulse
        int impulseInt = impulse->normalImpulses[0];

}
...