这就是我想要做的。
我有一个精灵,它在60秒内不断缩小。当碰撞发生时,这个精灵的比例增加了1.5。
-(void) update: (ccTime) deltaTime
{if(CGRectIntersectsRect([randomSprite boundingBox], [other boundingBox])) {
[SAE playEffect:@"collisionSoundEffect.mp3"];
[randomSprite runAction:[CCScaleBy actionWithDuration:3 scaleX:1.5 scaleY:1.5]];问题是,当3秒后,它的‘爸爸’回到大小,它将是如果碰撞没有发生。
当然更小。
我想让雪碧做的是在碰撞后留下 newSize。然后让精灵继续缩小它的规模。
任何帮助或指导都是非常感谢的。
谢谢。
[thisSpriteIsConstatnlyScalingDown runAction:[CCScaleBy actionWithDuration:60 scaleX:.01 scaleY:.01]];我试图保持新的规模,并开始缩小从这再次。
发布于 2012-08-08 14:23:25
我认为这是因为你有两个动作同时运行。放大操作完成后,缩小操作仍在运行。
#define kScaleDownActionTag 1
#define kScaleUpActionTag 2
...
// start downscale action
CCAction *action = /* your scale down action */;
action.tag = kScaleDownActionTag;
[sprite runAction:action];
...
if(CGRectIntersectsRect([randomSprite boundingBox], [other boundingBox]))
{
// if scale up action isn't running already
if (![randomSprite getActionByTag:kScaleUpActionTag])
{
// stop downscale action and run upscale action
[randomSprite stopActionByTag:kScaleDownActionTag];
CCAction *action = /* your scale up action */
action.tag = kScaleUpActionTag;
[randomSprite runAction:action];
}
}发布于 2012-08-08 12:39:10
如果要缩放到绝对缩放因子,请不要使用CCScaleBy。使用CCScaleTo代替。
CCScaleBy的问题是,如果你的比例是1.5,而你缩小了0.5,你就会得到1.0。但是,如果由于某种原因,当节点缩放为1.2时,标度会被中断并再次执行,那么最终您将完成从1.2到0.7的缩放。
最后,如果您想确保在完成缩放之后使用特定的缩放因子,请创建一个CCSequence,它的末尾有一个CCCallFunc或CCCallBlock,并手动地将缩放因子设置为一个特定的值。
https://stackoverflow.com/questions/11856008
复制相似问题