Cocos2d iphone 根据碰撞速度调整声音效果的音量

Cocos2d iphone 根据碰撞速度调整声音效果的音量,cocos2d-iphone,physics,box2d,Cocos2d Iphone,Physics,Box2d,我使用Cocos2D和Box2D来创建一个简单的物理游戏。我想根据碰撞物体的速度来调整碰撞声音效果的音量。物体碰撞时移动得越快,声音就越大。我正在使用SimpleAudioEngine库,它有一个带有增益参数的playSound方法。有没有办法将碰撞物体(b2Body对象)的速度转换为一个介于0和1之间的值,我可以应用于增益?在后解算函数中获得一个脉冲值,也许除以100?我不确定你的冲动有多大 void PostSolve(b2Contact* contact, const b2ContactI

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

在后解算函数中获得一个脉冲值,也许除以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];

}

谢谢你的回复,邦吉。这看起来是一个完美的解决方案,直到我读到PostSolve不需要传感器,而我碰撞中的一个物体恰好是一个传感器。也许我可以取物体的线性度,用向量长度把它转换成增益值?我只是想知道如何转换比例。谢谢你的帮助!啊,我不知道你有一个传感器,从技术上讲,因为它只是一个碰撞检测传感器,没有物理碰撞模拟被调用,所以它没有冲动。我认为你的计划是正确的。物体撞击传感器的速度是根据您自己的任意伪模拟计算出来的,以给您一个值。