Uvod
Kao što smo već rekli joint u Box2D-u predstavlja ograničenje koje ima svrhu da drži dva ili više tijela zajedno. U Box2D-u postoji više vrsta takvih objekata, a primjere istih možete isprobati na prethodnom flash programu. Ovakvi objekti se mogu kombinirati kako bi se stvorili složeniji. Također postoje joint objekti koji mogu oponašati motore i pomicati tijela određenom brzinom.
Ovakvi objekti se kreiraju putem factory metoda b2World klase.
Distance joint
Jedan od najednostavijih vrsta joint-a je distance joint. On definira da razmak između dvije točke na tijelu mora biti konstantan.
b2DistanceJointDef jointDef;
jointDef.Initialize(myBodyA, myBodyB, worldAnchorOnBodyA, worldAnchorOnBodyB);
jointDef.collideConnected = true;
Vidimo da koristimo metodu Initialize kako bi kreirali definiciju joint objekta. Prvi i drugi parametar označavaju tijela koja će biti povezana. Postoje i drugi parametri koje možemo postaviti, no nećemo se s njima sada detaljnije baviti. Pogledajmo sada kako se kreira konkretni joint objekt.
world->CreateJoint(&jointDef);
Revolute joint
Ova vrsta joint objekta stvara ograničenje koje dva objekta drži u odnosu na istu anchor točku.
b2RevoluteJointDef jointDef;
jointDef.Initialize(myBodyA, myBodyB, myBodyA->GetWorldCenter());
Trećim parametrom zadajemo zajednički anchor point.
Mouse joint
Ova vrtsta joint-a omogućava interakciju sa objektima putem npr. miša. Ima ulogu da prenese određenu točku na tijelu do npr. mjesta gdje smo kliknuli mišem, ili gdje smo odvukli miš. Važno je naglasiti da sa ovom vrstom joint-a nema ograničenja na rotaciju tijela.
Ostale vrste
Postoje još par vrsti join objekata u Box2D-u, a detaljan pregled i objašnjenja možete vidjeti na ovom linku.