我正在使用Cocos2D和Box2D来创建一个简单的物理游戏。我想根据碰撞体的速度调节碰撞声音效果的音量。身体碰撞时行进的速度越快,声音就越大。我正在使用SimpleAudioEngine库,它具有带增益参数的playSound方法。有没有办法将碰撞体(b2Body对象)的速度转换为0到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];
}