【问题标题】:Constant speed object in Box2D simulationBox2D 模拟中的恒速对象
【发布时间】:2014-02-21 18:24:08
【问题描述】:

我想制作像游戏一样的破砖块,但砖块会对物理做出反应。 我将世界设置为 0 重力,并且砖块具有大的线性和角度倾倒设置。

但是我的球有问题。我希望我的球始终保持相同的恒定速度。即使在与砖块、墙壁和桨碰撞后(是的,我有 2 个)。我知道这不是物理学的工作原理。

但是有什么方法可以让球在接触某些物体时不失速?并让球立即从砖块上反弹而不会失去其能量但会对它们(砖块)施加力?

【问题讨论】:

    标签: c++ box2d game-physics physics-engine


    【解决方案1】:

    我也在寻找它,但在 AS3 中 - 我确实找到了我想要的 c++。阅读后,我认为以下是您的意图,即使用 Box2D 物理以恒定速度移动对象。我也会发布链接,尽管用链接回答问题不是一个好习惯,因为它们将来可能会中断。 Constant Speed

      b2Vec2 vel = body->GetLinearVelocity();
        float desiredVel = 0;
        switch ( moveState )
        {
          case MS_LEFT:  desiredVel = -5; break;
          case MS_STOP:  desiredVel =  0; break;
          case MS_RIGHT: desiredVel =  5; break;
        }
        float velChange = desiredVel - vel.x;
        float impulse = body->GetMass() * velChange; //disregard time factor
        body->ApplyLinearImpulse( b2Vec2(impulse,0), body->GetWorldCenter() );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      相关资源
      最近更新 更多