根据碰撞速度调节音量

时间:2011-04-14 10:11:46

标签: cocos2d-iphone physics box2d

我正在使用Cocos2D和Box2D来创建一个简单的物理游戏。我想根据碰撞体的速度调节碰撞声音效果的音量。身体碰撞时行进的速度越快,声音就越大。我正在使用SimpleAudioEngine库,它具有带增益参数的playSound方法。有没有办法将碰撞体(b2Body对象)的速度转换为0到1之间可以应用于增益的值?

1 个答案:

答案 0 :(得分:2)

在后期求解函数中得到一个脉冲值,或许除以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];

}