2013-06-24 37 views
0

我在将bsprite放置在b2body上时遇到问题。CCSprite未放置在b2body顶部

我想调整box2d正文上的ccsprite。现在它在它们之间存在差距,我不想要那个差距。

我使用的是由Andreas Loew制作的GB2ShapeCache,用于获取灯体上的灯具。

enter image description here

PTM_RATIO = 32

这是我的代码:

string stageName="Stage1"; 

CCSize s = CCDirector::sharedDirector()->getWinSize(); 
CCPoint center=ccp((s.width/2),(s.height/2)); 

CCSprite *sprite = new CCSprite(); 
sprite->initWithFile("Stage1.png"); 
sprite->setAnchorPoint(CCPoint(0.50, 0.5)); 
sprite->setPosition(center); 
this->addChild(sprite); 

// Define the dynamic body. 
//Set up a 1m squared box in the physics world 
b2BodyDef bodyDef; 
bodyDef.type = b2_dynamicBody; 
bodyDef.userData=sprite; 
bodyDef.position.Set(center.x/PTM_RATIO,center.y/PTM_RATIO); 
//bodyDef.position=b2Vec2(10, 10); 

b2Body *body = world->CreateBody(&bodyDef); 

//adding fixtudre to body 
GB2ShapeCache::sharedGB2ShapeCache()->addFixturesToBody(body, "Stage1"); 

//weld joint at center 
b2WeldJointDef *weldJoint= new b2WeldJointDef(); 
weldJoint->Initialize(groundBody, body, b2Vec2(center.x/PTM_RATIO,center.y/PTM_RATIO)); 
world->CreateJoint(weldJoint); 
+0

非常弱的问题。请描述问题所在以及您期望的结果。 –

+0

@SebastianÄrleryd先生,我已经改变了我的问题,如果你问我需要哪些进一步的信息,我将不胜感激。 –

+0

对不起,但我没有任何使用Box2D的经验。我评论说,你可能需要改善你的问题才能得到答案。对不起,如果我听起来粗鲁的顺便说一句。你到目前为止已经尝试过什么来解决这个问题?看来CCSprite的中心和身体的中心偏移了(x,y)=(10,15)像素。 –

回答

1

我发现我的子画面图像具有在所有4个侧面尾部空格的溶液。一旦我删除它,并使用物理编辑器重新构建多边形,我的问题就解决了。代码是完全正常工作问题与图像