2013-09-23 47 views
0

我將cocos2d sprite加入box2 body的body definition userData如何找到box2身體?

b2BodyDef spriteBodyDef; 
spriteBodyDef.type = b2_dynamicBody; 
spriteBodyDef.position.Set(...); 
spriteBodyDef.userData = (__bridge void*)sprite; 
b2Body *spriteBody = _world->CreateBody(&spriteBodyDef); 

每個精靈都有標籤。有一些精靈。我不知道如何找到只有精靈標籤的身體。我可以通過使用getChildByTag找到精靈本身,但是如何定位身體?遍歷所有主體並比較userData和找到的精靈還是有更好的方法?感覺對我來說不太自然...

回答

0

我將CCSprite分類爲PhysicsSprite並添加了b2Body * body作爲屬性。 這樣我可以直接訪問主體並調用GetPosition()。

編輯:我添加它作爲一個成員(而不是屬性),併爲它寫了一個getter。

@interface PhysicsBall:CCSprite{ 
    b2Body* ballBody; 
} 
-(b2Body*)getPhysicsBody; 

其中

-(b2Body*)getPhysicsBody{ 
    return ballBody; 
} 
+0

你如何在聲明子類的標題b2Body財產? – Pablo

+0

已編輯我的答案..我沒有添加它作爲財產,但作爲一個成員..forgot關於.. –