Уменьшение угла отражения с помощью Box2D - PullRequest
3 голосов
/ 03 августа 2011

Народ,

Я пытаюсь реализовать определенное поведение при столкновении, когда мяч падает на стену под углом.Я хочу, чтобы мяч поддерживал полную скорость, но я хотел бы, чтобы угол отражения был несколько приглушенным, чтобы он меньше отражался от направления, в котором он появился.

Я играл с трением, демпфированиеми реституция, но, похоже, ничто не меняет моего угла возврата.

Кто-нибудь знает, как я могу заставить box2d делать то, что я хочу?

Угол отражения шара

image http://i.stack.imgur.com/lMwLN.png

Спасибо за помощь ,!кен

1 Ответ

2 голосов
/ 08 мая 2012

Во-первых, вы можете установить 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;
    ...
}

Надеюсь, вы понимаете, о чем я говорю

...