3

皆さん、

ボールが斜めに壁にぶつかる衝突に特定の動作を実装しようとしています。ボールが全速力を維持するようにしたいのですが、反射角度をやや抑えて、ボールが来た方向から跳ね返らないようにしたいと考えています。

摩擦、ダンピング、反発をいじってみましたが、リターン バウンス角度に違いはないようです。

box2dにやりたいことをさせる方法を知っている人はいますか?

ボールの反射角

画像 http://i.stack.imgur.com/lMwLN.png

助けてくれてありがとう、!ケン

4

1 に答える 1

2

まず、世界に contactListener を設定してから、ボールと壁の間の正確な衝突を見つけることができます。次に、衝突点を見つけます。最後に、衝突点と体の中心の間の角度を計算します。

そのような

void contactListener::BeginContact(b2Contact *contact)
{
    //find out the collision between the ball and the wall.
    ....

    //find out the collision point
    b2WorldManifold worldManifold;
    contact->GetWorldManifold(&worldManifold);
    b2Vec2 collisionPoint = worldManifold.points[0];

    //calculate the angle between collision point and body center.
    b2Vec2 bodyCenter = body->GetWorldCenter;
    ...
}

私の言いたいことを理解していただければ幸いです

于 2012-05-08T09:20:28.917 に答える