|
|
|||||
Регистрация: Aug 2013
Сообщений: 14
|
цеетр тяжеститела в box2d
Здарвсвуйте, у меня есть сложная невыпуклая фигура, я разбив её на 2 половины,описываю каждую половину в box2d.Тело получается, но с сильно смещенным центром тяжести в право, из-за этого получается очень много
косяков. Вот пример кода bodyDef = new b2BodyDef(); var val1:Number = 98 / meters + Math.cos(nAngle/180*Math.PI) * (71/meters); var val2:Number = 348/meters - Math.sin(nAngle/180*Math.PI)*(71/meters); bodyDef.position.Set(val1, val2) ; bodyDef.type = b2Body.b2_staticBody ; bodyShapePoligon = new b2PolygonShape() ; bodyShapePoligon.SetAsArray([b2Vec2.Make( -26 / meters, 26 / meters), b2Vec2.Make( 8 / meters, -27 / meters), b2Vec2.Make( 15 / meters, -19 / meters), b2Vec2.Make( 14 / meters, -6 / meters),b2Vec2.Make( 9 / meters, 5 / meters),b2Vec2.Make( -4 / meters, 20 / meters),b2Vec2.Make( -18 / meters, 26 / meters),b2Vec2.Make( -23 / meters, 27 / meters)], 8) ; fixture = new b2FixtureDef() ; fixture.shape = bodyShapePoligon; fixture.friction = 0.9; fixture.density = 10; fixture.restitution = 0.5; body = _world.CreateBody(bodyDef); body.CreateFixture(fixture) ; bodyShapePoligon = new b2PolygonShape() ; bodyShapePoligon.SetAsArray([b2Vec2.Make( -28 / meters, 25 / meters), b2Vec2.Make( -31 / meters, 22 / meters), b2Vec2.Make( -34 / meters, 14 / meters), b2Vec2.Make( -33 / meters, 6 / meters),b2Vec2.Make( -28 / meters, -10 / meters),b2Vec2.Make( -14 / meters, -22 / meters),b2Vec2.Make( 1 / meters, -29 / meters),b2Vec2.Make( 3 / meters, -29 / meters)], 8) ; fixture = new b2FixtureDef() ; fixture.shape = bodyShapePoligon; fixture.friction = 0.9; fixture.density = 5; fixture.restitution = 0.5; body.CreateFixture(fixture) ; body.ApplyImpulse(new b2Vec2(Math.cos(-nAngle/180*Math.PI)*distance*20, Math.sin(-nAngle/180*Math.PI+9*Math.PI/20)*distance*20), new b2Vec2(body.GetWorldCenter().x , body.GetWorldCenter().y)); |
|
|||||
Регистрация: Jul 2009
Сообщений: 48
|
Вот вам быстрый трикс.
Делаете еще один кусок (форму можно описать примитивом, кругом например) с большим density (density других кусков можно подогнать поэксперементировав, если вам надо фиксированную массу иметь), только чтобы он не вылазил за рамки других кусков (т.е. не создавал не нужных коллизий). Позиционируете его в теле, там где надо центр тяжести и вуаля! |
|
|||||
Регистрация: Aug 2013
Сообщений: 14
|
спасибо, интересно попробывать,
я пытался через setMassDate , но как ни странно центр тяжести не отклонялся |
Часовой пояс GMT +4, время: 15:21. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|