box2d:为什么球可以';你不会在缓坡上反弹吗?

box2d:为什么球可以';你不会在缓坡上反弹吗?,box2d,Box2d,我创建了一个摩擦为0.f,恢复为1.0的球,如下所示: // Create shape definition and add to body b2FixtureDef ballShapeDef; ballShapeDef.shape = &circle; ballShapeDef.density = 1.f; ballShapeDef.friction = 0.f; ballShapeDef.restitution = 1.0f; //ba

我创建了一个摩擦为0.f,恢复为1.0的球,如下所示:

// Create shape definition and add to body
    b2FixtureDef ballShapeDef;
    ballShapeDef.shape = &circle;
    ballShapeDef.density = 1.f;
    ballShapeDef.friction = 0.f;
    ballShapeDef.restitution = 1.0f;
    //ballBodyDef.bullet = YES;
    _ballFixture = ballBody->CreateFixture(&ballShapeDef);
    // Give shape initial impulse...
    b2Vec2 force = b2Vec2(0, 1.2f);
    ballBody->ApplyLinearImpulse(force, ballBodyDef.position);
碰撞发生时,球很好地弹离墙壁。但是当它与一个逐渐倾斜的斜坡碰撞时,它会像在冰上一样滑动,就像这样:

// Create shape definition and add to body
    b2FixtureDef ballShapeDef;
    ballShapeDef.shape = &circle;
    ballShapeDef.density = 1.f;
    ballShapeDef.friction = 0.f;
    ballShapeDef.restitution = 1.0f;
    //ballBodyDef.bullet = YES;
    _ballFixture = ballBody->CreateFixture(&ballShapeDef);
    // Give shape initial impulse...
    b2Vec2 force = b2Vec2(0, 1.2f);
    ballBody->ApplyLinearImpulse(force, ballBodyDef.position);

斜坡的物理特性是: 密度:1 摩擦力:0 归还:1


如何使球反弹离开斜坡?

如果两个表面都没有摩擦力,则当球以一定角度撞击时,没有理由“反弹”。试着让两个表面都有一点摩擦。

试着让球或斜坡恢复原状