【问题标题】:Box2d strange behavior when 2 bodies colliding while rotating当 2 个物体在旋转时发生碰撞时,Box2d 的奇怪行为
【发布时间】:2016-09-17 23:37:10
【问题描述】:

我最近正在开发一款游戏(应该是类似重装的太空船游戏)。 所以我的情况: - 我有 2 个身体,0 恢复和 0 摩擦 - 当它们碰撞时,它们会因为我的线性倾倒而滑动并失去速度 - 但是当它们中的一个都在旋转时(以设定角速度),它们会以非常高的速度弹开,我不知道为什么它们甚至会如此猛烈地弹跳。

(我读到即使没有恢复原状,也应该有一点弹跳,但我并不期待这样的事情)

这里有一些代码:

    b2PolygonShape shape;

    b2BodyDef def;
    def.type = b2_dynamicBody;

    b2FixtureDef fix;
    fix.density = 1.f;
    fix.restitution = .0f;
    fix.friction = 0.f;


    bbody = world->CreateBody(&def);
    bbody2 = world->CreateBody(&def);


    bbody->SetLinearDamping(2.0f);
    bbody2->SetLinearDamping(2.0f);

    // PIXELPERMETER is the scaling from pixels to meter. (30)
    shape.SetAsBox(32 / PIXELPERMETER/*=30*/, 32 / PIXELPERMETER);

    fix.shape = &shape;
    bbody->CreateFixture(&fix);
    bbody2->CreateFixture(&fix);

    bbody2->SetTransform(b2Vec2(-100 / PIXELPERMETER, 0), 0);

【问题讨论】:

    标签: c++ box2d game-physics


    【解决方案1】:

    也许你应该尝试调整你身体的质量数据?

    b2MassData massData; massData.mass = 50; //Just tweak me massData.I = 1; //Just never set me to 0 if you don't want to have nAn propagating massData.center = b2Vec2_zero; bbody->SetMassData(&massData);

    【讨论】:

    • 好的,我试试,谢谢您的快速回复。编辑:是的,它成功了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    相关资源
    最近更新 更多