Здравствуйте.
Не могу создать жесткого сварного соединения... Мое сварное соединение больше похоже на болтовое соединение на которое действуют силы, пытающиеся вернуть тело в изначальное положение, при деформации соединения...
Тело-корпус машины(состоит из 2-х частей- перед и зад). К каждой части прикреплено колесо... Проблема в "прогибе корпуса"...
Сразу говорю, машинка не большая, масштаб учитывал, например радиус колеса с учетом масштабов =0.5.
Вот параметры для солвера:
static float32 timeStep = 1.0f / 30.0f; static int32 velocityIterations = 6; static int32 positionIterations = 6;
Гравитация:
static b2Vec2 gravity(0.0f, 10.0f);
Вот сам корпус:
b2BodyDef bodycar; //тут задняя часть машины bodycar.type=b2_dynamicBody; bodycar.allowSleep; bodycar.angle=180; bodycar.position.Set(380/30, 90/30); bodycar1 = world.CreateBody( &bodycar);//зад b2PolygonShape chassis; b2Vec2 vertices[7]; vertices[0].Set( scl( 0), scl( 0)); vertices[1].Set( scl( 70), scl( 0)); vertices[2].Set( scl( 95), scl( 10)); vertices[3].Set( scl( 80), scl( 35)); vertices[4].Set( scl( 65), scl( 45)); vertices[5].Set( scl( 20), scl( 45)); vertices[6].Set( scl( 0), scl( 25)); chassis.Set( vertices, 7); fixturecars.shape = &chassis; fixturecars.filter.groupIndex=-1; fixturecars.density=0.1; fixturecars.friction=0.5; fixturecars.restitution=0.1; bodycar1->CreateFixture( &fixturecars); b2BodyDef bodycar_2;//тут передняя часть машины bodycar_2.type=b2_dynamicBody; bodycar_2.allowSleep; bodycar_2.angle=180; bodycar_2.position.Set( 380/30, 90/30);//смещаем перед машиной для дальныйшего трансформа))) bodycar2 = world.CreateBody( &bodycar_2);//перед b2PolygonShape chassis2; b2Vec2 vertices2[6]; vertices2[0].Set( scl( 5), scl( 0)); vertices2[1].Set( scl( 40), scl( 0)); vertices2[2].Set( scl( 40), scl( 25)); vertices2[3].Set( scl( 5), scl( 20)); vertices2[4].Set( scl( 0), scl( 15)); vertices2[5].Set( scl( 0), scl( 5)); chassis2.Set( vertices2, 6); fixturecars2.shape = &chassis2; fixturecars2.filter.groupIndex=-1; fixturecars2.density=0.05; fixturecars2.friction=0.5; fixturecars2.restitution=0.1; bodycar2->CreateFixture( &fixturecars2);
b2WeldJointDef ccn;// состыковка частей (переда и зада) машины!!! низ
ccn.bodyA=bodycar1;// сперва зад
ccn.bodyB=bodycar2;// перед
ccn.localAnchorA=b2Vec2(0,0);
ccn.localAnchorB=b2Vec2(40.0/30.0,0);
ccn.collideConnected=1;
ccn.frequencyHz=5;
ccn.dampingRatio=0;//пробовал и 0 и 1
world.CreateJoint(&ccn);
Что не так с этим сварным соединением????
создавай отдельную тему в разделе "физика" с пометкой box2d
Тема в архиве.