kubawal Temat założony przez niniejszego użytkownika  | 
[SFML + Box2d] Budowa autka (problem  wheel jointami) » 2014-02-04 10:46:51 Witam! Chcę sobie napisać grę typu "autko 2d jeżdżące po trudnym terenie" i mam problem z tworzeniem amortyzatorów autka.  Wyczytałem, że do takich celów powinno się stosować wheel jointy. Jednak mam z nimi problem. O ile na początku autko się raz czy dwa odbije, to później jointy jakby się urywają u koła się rozjeżdżają. Oto kod tworzący autko: class Body {     b2Body b;           }; class Game {     b2World world;     RenderWindow win;     vector < Body *> objs;          void addDynamicBody(  ); };
  void createCar( Game * g ) {     Vector2f ltPos( 320.0f, 100.0f );                b2PolygonShape sh;     sh.SetAsBox( SFtoB2( 50.0f ), SFtoB2( 20.0f ), SFtoB2( ltPos + Vector2f( 50.0f, 20.0f ) ), 0.0f );     Body * car = g->addDynamicBody( Vector2f(), sh, "car" );               float whRad = 10.0f;     b2CircleShape wh;     wh.m_radius = SFtoB2( whRad );          wh.m_p = SFtoB2( ltPos + Vector2f( 20.0f, 60.0f ) );     Body * lwheel = g->addDynamicBody( Vector2f(), wh, "left wheel" );          wh.m_p = SFtoB2( ltPos + Vector2f( 80.0f, 60.0f ) );     Body * rwheel = g->addDynamicBody( Vector2f(), wh, "right wheel" );               b2WheelJointDef spr;     spr.collideConnected = true;     spr.dampingRatio = 10.3f;     spr.enableMotor = true;     spr.motorSpeed = 0.0f;     spr.maxMotorTorque = 100000.0f;          spr.Initialize( car->b, lwheel->b, SFtoB2( ltPos + Vector2f( 20.0f, 60.0f ) ), b2Vec2( 0.0f, 0.1f ) );     g->world.CreateJoint( & spr );          spr.Initialize( car->b, rwheel->b, SFtoB2( ltPos + Vector2f( 80.0f, 60.0f ) ), b2Vec2( 0.0f, 0.1f ) );     g->world.CreateJoint( & spr ); }
  Dodam, że przy wyświetlaniu tego za pomocą b2Draw wyświetlają się dziwne dodatkowe linie wychodzące  od kół i idące "gdzieś w świat" http://youtu.be/IXzPF43MW34 | 
 | 
MrPoxipol  | 
» 2014-02-04 17:48:01  | 
 | 
kubawal Temat założony przez niniejszego użytkownika  | 
» 2014-02-06 14:06:09 Już patrzyłem na te obydwa tutki. A z tego co wyczytałem o wheel joincie wynika, że to jest jakby połączenie prismatic i revolute jointa (koło może się kręcić i podskakiwać na wybojach) <- czy dobrze mówię? Bo przecież wheel joint powinien być ograniczony do pewnej osi...  | 
 | 
kubawal Temat założony przez niniejszego użytkownika  | 
» 2014-02-06 15:37:54 Dobra, koła się już nie rozjeżdżają (przy inicjalizacji jointa podawałem pozycję zaczepienia do karoserii, a powinno się podawać środek koła) Ale jest jeszcze jeden problem: koła się za mało odbijają, kiedy autko spada to trochę się odbiją, a później karoseria leży na kołach i amortyzatory nie działają. http://youtu.be/bb285-UoSA4 | 
 | 
kubawal Temat założony przez niniejszego użytkownika  | 
» 2014-02-07 12:16:38 Dodam jeszcze, że amortyzatory przez chwilę działają, a dopiero później jakby sie spłaszczają i już nie działają.  | 
 | 
DejaVu  | 
» 2014-02-07 13:46:33 Jak tak intensywnie maglujesz Box2D to rozważ później napisanie jakichś artykułów.  | 
 | 
kubawal Temat założony przez niniejszego użytkownika  | 
» 2014-02-07 14:43:37 Też rozważałem tę kwestię i doszedłem do wniosku, że lepiej najpierw się jej dobrze nauczyć, żeby nie pisać bzdur...  | 
 | 
kubawal Temat założony przez niniejszego użytkownika  | 
» 2014-02-08 14:07:32 Napisałem o tym problemie na oficjalnym forum box2d( http://www.box2d.org/forum/viewtopic.php?f=3&t=9643) i wyszło, że po prostu miałem za duże wartości parametrów wheel jointa. Co do tego artykułu: zamierzam najpierw napisac jakąś grę żeby sobie poćwiczyć box'a, a później może napiszę cały kurs o stosowaniu box'a i sfml'a przy tworzeniu gier.  | 
 | 
|  « 1 »  |