Вы можете использовать простое действие [CCScaleTo ..] или, если вы хотите создать свой собственный «эффект», вы можете продвинуть CCFiniteTimeAction. Я бы предпочел первый:
CCSprite * sprite = ...; // create the sprite.
sprite.anchorPoint = ccp( 0.5, 0.5 ); center the pivot
id myAction = [CCRepeatForEver actionWithActions:[CCScaleTo actionWithDuration:0.5 scaleX:2.0 ScaleY:2.0],[CCScaleTo actionWithDuration:0.5 scaleX:0.5 ScaleY:0.5], nil];
[sprite runAction:myAction];
используйте CCEase, чтобы сделать анимацию нелинейной
id myAction = [CCRepeatForEver actionWithActions:[CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:0.5 scaleX:2.0 ScaleY:2.0] rate:2.0],[CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:0.5 scaleX:0.5 ScaleY:0.5] rate:2.0], nil];
это сообщение может содержать ошибки. но я надеюсь, что вы понимаете, как достичь цели.