2016-09-17 3 views
0

Я разрабатываю игру недавно (это должна быть игра космического корабля, такая как сборка). Итак, моя ситуация: - у меня есть 2 тела с 0 реституцией и 0 трением - когда они сталкиваются, они скользят и теряют скорость из-за моего линейного падения - но когда один из них вращается (с setangularvelocity), они отскакивают с очень высокой скоростью, и я не могу понять, почему они даже сильно подпрыгивают.Box2d странное поведение, когда 2 тела сталкиваются при вращении

(и я прочитал, что там должна быть просто немного подпрыгивая, даже если нет реституции, но я не ожидал что-то вроде этого)

Вот код:

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); 

ответ

0

Может быть, вы должны попытаться настроить массовые данные ваших тел?

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);

+0

хорошо, я буду стараться, спасибо за быстрый ответ. Редактировать: да, это было трюк! – Cobrapitz

Смежные вопросы