Cocos2d: sprite de intercâmbio
-
27-09-2019 - |
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 ??
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.