2010-10-03 3 views
0

J'utilise ce qui suit pour n'échanger que la position de 2 images-objets.cocos2d: Sprite d'échange

CCSprite *sprite1 = (CCSprite*)[self getChildByTag:tagOfFirstSprite]; 
    CCSprite *sprite2 = (CCSprite*)[self getChildByTag:tagOfSecondSprite]; 

    CGPoint SpritePosition1 = [sprite1 position]; 
    CGPoint SpritePosition2 = [sprite2 position]; 



    [sprite1 runAction:[CCMoveTo actionWithDuration:1.0 position:ccp(SpritePosition2.x, SpritePosition2.y)]]; 
    [sprite2 runAction:[CCMoveTo actionWithDuration:1.0 position:ccp(SpritePosition1.x, SpritePosition1.y)]]; 

Ce sont box2d body.But ça ne marche pas ....... une idée?

Répondre

2

Je suppose que vous utilisez le modèle d'exemple Box2D qui implémente la fonction "tick()" qui est appelée en permanence par le planificateur. Cette fonction appelle la fonction world-> step() et met à jour la position des corps box2D, puis met à jour la position de vos sprites en fonction de la nouvelle position des corps box2D. Lorsque vous appelez simplement runAction, cela n'affecte pas la position de vos corps Box2D, donc chaque fois que la fonction tick() sera appelée, la position de vos sprites sera définie en fonction de la position des corps box2D. Maintenant, même si runAction déplace vos sprites, il est réinitialisé deux fois par seconde lorsque la fonction tick() est appelée. J'espère que vous comprenez.

+0

Veuillez lire ce fil pour une meilleure compréhension de ce problème, http://www.cocos2d-iphone.org/forum/topic/6971 – Tayyab

+0

oui..bien que je l'ai déjà découvert ... mais très très merci pour votre belle description ..... je pense que vous le rendre clair ... – Rony