In box2d test there is example how to bind sprite to box2d body. And how to do same with joint ? Anybody help !
If I understand correctly, you need to bind sprite to join?
you can use Userdata. sample:
@ b2RevoluteJointDef jointDef;
jointDef.userData = m_sprite;@
Are you sure ? I tried this. Only joint was created, and there is no sprite connected to it
Please, if you can show your code.
void HelloWorld::addNewConnect (b2Body * myBodyA, b2Body * myBodyB) {
b2DistanceJointDef jointDef;
jointDef.Initialize(myBodyA, myBodyB, myBodyA~~>GetWorldCenter, myBodyB~~>GetWorldCenter());
CCSprite * temp = CCSprite::create(“CloseSelected.png”);
temp~~>setPosition);
this~~>addChild(temp);
jointDef.userData = temp;
b2DistanceJoint* joint = (b2DistanceJoint*)world->CreateJoint(&jointDef);
}
I can not understand why it is you need.
You can see how bind sprite to box2d body.
b2DistanceJoint* joint = (b2DistanceJoint*)world->CreateJoint(&jointDef); for (b2Joint* f = joint; f; f = f->GetNext()) { CCSprite* m_sprite = static_cast<CCSprite*>(f->GetUserData()); if(m_sprite) { //you operation with sprite //m_sprite->setVisible(false); } }
Sorry i have bad english
I have two bodies. Between them should be colored line - distance joint. I created bodies using PhysicsSprite class from standart box2dtest. Please, open cocos2d-x tests and find this example. There are boxes, please, tell me, how to create visible joints between them ?
maybe you are talking about debug mode?
see here http://www.cocos2d-x.org/boards/6/topics/13032 (i’m used this)
Only with debug draw Box2d;
GLESDebugDraw m_debugDraw;
world->SetDebugDraw(m_debugDraw);
unsigned int flag;
flag+=b2Draw::e_JointBit;
m_debugDraw_>SetFlag(flag);//Set flag e_joinBit
But this metog set visible all joint in scene.
For semulate joint draw, you can add body in joint point, and add to it the sprite object.
Sorry i have bad english, too.
Vitaly, do you speak russian ? Please, add me in skype : umni4ek, or in icq 591 476 364. Or on vk.com, my id 770044
Ok. After 20.00PM by Moskow time.