Pergunta

Eu uso o seguinte para trocar apenas a posição de 2 sprite.

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)]];

Estes são box2d corpora. Mas não funciona ....... alguma idéia ??

Foi útil?

Solução

Suponho que você esteja usando o modelo de amostra Box2D que implementa a função "tick ()" que é chamado continuamente pelo agendador. Esta função chama a função mundial-> etapa () e as atualizações da posição dos corpos Box2D e atualizam a posição de seus sprites de acordo com a nova posição dos corpos Box2D. Quando você chama a RunAction, isso não afeta a posição dos seus corpos Box2D; portanto, cada vez que a função tick () será chamada, a posição dos seus sprites será definida de acordo com a posição dos corpos Box2D. Agora, mesmo que sua Runaction esteja movendo seus sprites, ela será redefinida após algumas vezes a cada segundo quando a função tick () é chamada. Espero que entenda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top