2011-12-08 7 views
1

J'essaie de joindre deux corps box2d qui sont séparés sur une distance fixe. Les deux corps ne peuvent pas tourner eux-mêmes, et la jointure devrait avoir une rotation non plus. L'écart entre les corps doit permettre à d'autres corps de passer à travers.Fixation de deux corps box2D solidement ensemble

J'ai actuellement une configuration b2revoluteJoint comme ceci:

b2RevoluteJointDef rjd; 
rjd.lowerAngle = 0.0f; 
rjd.upperAngle = 0.0f; 
rjd.Initialize(body2, body1, body2->GetPosition()); 
rjd.collideConnected = false; 
world->CreateJoint(&rjd); 

Cependant l'articulation est pas complètement rigide et les corps ont tendance à se déplacer un peu juste par rapport à l'autre. Y a-t-il une meilleure manière de faire cela?

J'ai aussi essayé le b2WeldJoint qui ne fonctionne pas comme je suppose que les deux corps doivent se chevaucher ...

EDIT:

Le b2WeldJoint J'ai essayé est:

b2WeldJointDef wj; 
wj.Initialize(body1, body2, body1->GetWorldCenter()); 
world->CreateJoint(&wj); 

Cependant quand je bouge un corps, l'autre reste dans sa position.

Répondre

0

J'ai aussi essayé le b2WeldJoint qui n'a pas fonctionné comme je suppose que les deux corps doivent se chevaucher ...

Pour autant que je sache, les formes des corps ne doivent pas nécessairement chevauchement. Autant que j'ai compris votre installation, le joint de soudure serait approprié, puisqu'il interdit toute translation et rotation relatives.

+0

Constantinius, j'ai mis à jour ma question avec un exemple b2WeldJoint que j'ai essayé sans succès. – Alex

+0

Votre utilisation du joint de soudure me semble correcte. Avez-vous essayé de faire deux formes et de les ajouter à un seul corps? – Constantinius