iOS在重复操作中更改SKAction速度

时间:2015-07-18 16:46:48

标签: ios objective-c skspritenode skaction

我已经在一些地方看到,更改SKAction的speed变量会改变速度;但是,这对我来说似乎没有用。

- (void)startAnimating {
    SKAction *moveDown = [SKAction moveByX:0 y:-[CAUtilities screenSize].height duration:self.animationDuration];
    [self setMoveDownAction:[SKAction repeatActionForever:moveDown]];
    [self runAction:self.moveDownAction];
}

- (void)incAnimationSpeedBy:(CGFloat)aFloat {
    self.moveDownAction.speed += 0.5;
    NSLog(@"%f", self.moveDownAction.speed);
}

self.moveDownAction.speed调用中看到的NSLog的实际值发生了变化,但实际动画没有变化。

点击屏幕后我会调用incAnimationSpeedBy:,因此使用带有SKAction的{​​{1}}序列将无法满足我的需求。

我试过了:

  • 将初始runBlock作为实例变量。
  • 将重复永久动作作为实例变量(见上文)。
  • 更改moveDown属性而不是duration

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

问题是当我应该更改父SKAction上的速度时,我试图改变不同SKSpriteNode个对象的速度。

- (void)startAnimating {
    SKAction *moveDown = [SKAction moveByX:0 y:-[CAUtilities screenSize].height duration:3.0];
    [self runAction:[SKAction repeatActionForever:moveDown]];
}

- (void)incAnimationSpeedBy:(CGFloat)aFloat {
    if (self.speed + aFloat < kMaxSpeed)
        self.speed += aFloat;
}