【问题标题】:Achieving Billiard ball simulation with box2d on iOS在 iOS 上使用 box2d 实现台球模拟
【发布时间】:2012-12-22 03:49:30
【问题描述】:

使用此属性:

b2FixtureDef ballShapeDef;
    ballShapeDef.shape = &circle;
    ballShapeDef.density = 1.0f;
    ballBodyDef.linearDamping = 1.0f;
    ballBodyDef.bullet = YES;
    ballShapeDef.friction = 1.0f;
    ballShapeDef.restitution = 0.7f;
    ballBodyDef.angularDamping = 3;

我试图在设置为重力 (0,0) 的世界中模拟一个台球并击球 像这样的球:

- (void) applyShot:(float) ang {

    float vx = 10 * cosf(ang);
    float vy = 10 * sinf(ang);

    b2Vec2 velVec = _whiteBall->GetLinearVelocity();
    velVec.x += (vx * 10);
    velVec.y += (vy * 10);

    _whiteBall->SetLinearVelocity(velVec);

}

球的表现确实有点不切实际,因为它“滑动”太多 强力击球后慢慢上桌,不停歇。

我的表格边框是静态墙,够了吗?

问候 米尔扎

【问题讨论】:

    标签: iphone ios box2d


    【解决方案1】:

    通过直接设置线速度,台球不参与物理模拟。相反,你会想要使用

    _whiteBall->ApplyForce(velVec, _whiteBall->GetWorldCenter());
    

    _whiteBall->ApplyLinearImpulse(velVec, _whiteBall->GetWorldCenter());
    

    我强烈推荐 linear movementconstant speed 上的 iforce2d 教程,以真正了解与 Box2D 实体交互的正确方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      相关资源
      最近更新 更多