アプリケーションでこのメソッドを使用する方法がわかりません
void MyContactListener::PreSolve(b2Contact* contact, const b2Manifold* oldManifold) {
b2WorldManifold worldManifold;
contact->GetWorldManifold(&worldManifold);
b2PointState state1[2], state2[2];
b2GetPointStates(state1, state2, oldManifold, contact->GetManifold());
//NSLog(@"Presolving");
if (state2[0] == b2_addState)
{
const b2Body* bodyA = contact->GetFixtureA()->GetBody();
const b2Body* bodyB = contact->GetFixtureB()->GetBody();
b2Vec2 point = worldManifold.points[0];
b2Vec2 vA = bodyA->GetLinearVelocityFromWorldPoint(point);
b2Vec2 vB = bodyB->GetLinearVelocityFromWorldPoint(point);
b2Vec2 rV = vB - vA;
float32 approachVelocity = b2Dot(rV, worldManifold.normal);
if (-1.5f < approachVelocity && approachVelocity < 0.0f)
{
//MyPlayCollisionSound();
NSLog(@"Not Playing Sound");
}
else
{
NSLog(@"playing the sound");
}
}
}
HelloWorldLayer.mm でこのコードを使用するにはどうすればよいですか。助けてください... ここで問題があります。いくつかのボディが落下して静的なボディにぶつかるシーンがあり、エッジも同様です。b2ContactListener を実装し、tick メソッドで接触をチェックして音を再生します。このアプローチの問題は、体が静的な体と常に接触している場合、音が前の音に重なって無期限に再生されるため、最後に大きなノイズが発生することです。この状況を回避するには?
私を助けてくださいありがとう......