2013-09-23 3 views
0

J'ajoute cocos2d sprite dans la définition du corps userData du corps box2.Comment localiser le corps box2?

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

Chaque sprite possède une étiquette. Il y a un nombre de sprites. Je ne suis pas sûr comment trouver le corps ayant seulement l'étiquette de lutin. Je peux trouver sprite lui-même en utilisant getChildByTag, mais alors comment localiser le corps? Itérer à travers tous les corps et comparer userData avec sprite trouvé ou il y a une meilleure façon? Ne me semble pas naturel ...

Répondre

0

J'ai sous-classé CCSprite comme PhysicsSprite et ajouté le corps b2Body * en tant que propriété. De cette façon, je peux accéder directement au corps et appeler GetPosition().

EDIT: Je l'ai ajouté en tant que membre (pas une propriété) et a écrit un getter pour cela.

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

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

Comment vous déclarez la propriété b2Body en-tête de la sous-classe? – Pablo

+0

ont édité ma réponse .. je ne l'ai pas ajouté en tant que propriété, mais en tant que membre ..forgot à ce sujet .. –

Questions connexes