我有一个可在游戏中上下缩放的SKSpriteNode。每次用户点击屏幕时,此代码都会运行:
[self.sprite removeAllActions];
[self.sprite setScale:1];
SKAction *action = [SKAction scaleBy:scale duration:4];
[self.sprite runAction:action withKey:@"blowup"];
在第一次点击时,它以正常的持续时间4秒运行,但是在第二次和所有进一步的点击时,SKAction以10倍的速度运行,这是非常意外的,因为唯一的SKAction是这个在精灵上调用的而且没有使用其他持续时间。
有什么想法吗?提前致谢
修改
将我的代码更改为scaleTo
而不是scaleBy
然而现在我发现,如果用户在SKAction动画完成后点击,则会播放预期的动画时间,但如果用户在动画期间点按并尝试停止动画,则会发生超快动画。
答案 0 :(得分:0)
每次触摸精灵时都会将比例相乘。
所以让我们说你按4缩放,下次你点击你的精灵16,第三次64.精灵将会很快增长!您可能需要考虑ScaleTo
而不是ScaleBy
取决于你的目标..