【问题标题】:Box2D Center of MassBox2D 质心
【发布时间】:2011-07-05 06:54:44
【问题描述】:

我正在尝试将质心设置为长矛状物体。以下是相关代码:

   // Create spear body and shape
    b2BodyDef spearBodyDef;
    spearBodyDef.type = b2_dynamicBody;
    spearBodyDef.position.Set(100.0/PTM_RATIO, 100.0/PTM_RATIO);
    //spearBodyDef.angle =  45.0 * (180.0f/b2_pi);
    spearBodyDef.userData = _spear;
    _spearBody = _world->CreateBody(&spearBodyDef);


    b2PolygonShape spearShape;
    spearShape.Set(verts, num);

    b2FixtureDef spearShapeDef;
    spearShapeDef.shape = &spearShape;
    spearShapeDef.density = 100.0f;
    spearShapeDef.friction = 0.9f;
    spearShapeDef.restitution = 0.1f;
    _spearBody->CreateFixture(&spearShapeDef);

    b2MassData massD;
    _spearBody->GetMassData(&massD);
    b2Vec2 centerV;
    centerV.x = 25.0;
    centerV.y = -1.0f;
    massD.center = centerV;
    _spearBody->SetMassData(&massD);

由于断言失败,这会使应用程序崩溃:

Jul  5 02:52:23 unknown UIKitApplication:com.youcompany.box[0xb15c][10311] <Notice>: Assertion failed: (m_I > 0.0f), 
Jul  5 02:52:23 unknown UIKitApplication:com.youcompany.box[0xb15c][10311] <Notice>: function SetMassData, file /User
Jul  5 02:52:23 unknown UIKitApplication:com.youcompany.box[0xb15c][10311] <Notice>: s/~/Desktop/box/box/libs/Box
Jul  5 02:52:23 unknown UIKitApplication:com.youcompany.box[0xb15c][10311] <Notice>: 2D/Dynamics/b2Body.cpp, line 357
Jul  5 02:52:23 unknown UIKitApplication:com.youcompany.box[0xb15c][10311] <Notice>: .

我做错了什么?谢谢

【问题讨论】:

  • 由于某种原因惯性矩小于零

标签: objective-c ios cocoa-touch box2d game-physics


【解决方案1】:

这是一个棘手的问题...您可以更改海量数据的 m_I 以伴随 CoM 位置的变化,但可能很难做到正确,并且在幸运之前您会遇到更多的崩溃。与其像那样改变质量,你可以在矛的前面添加另一个固定装置来压低它——这会更容易调整。如果您不希望它与任何东西发生碰撞,第二个固定装置可以是传感器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 2012-02-22
    • 2013-03-27
    • 1970-01-01
    相关资源
    最近更新 更多