精灵套件动画分数增量

时间:2014-11-15 23:57:16

标签: objective-c animation sprite-kit

因此,在我的“游戏结束”场景中,我想像一些游戏那样对得分进行动画计数。我写了一个这样的方法:

-(void)animateScoreNumberLabel{
    if ([scoreNumberLabel.text integerValue]<SCORE) {
        [self runAction:[SKAction waitForDuration:.001f]completion:^{
            [self incrementScoreNumberLabel];
            [self animateScoreNumberLabel];
        }];
    }
}

它有效,但似乎在.01f等待时间“顶部” - A.K.A.,我无法让动画以每秒100“增量”的速度运行。对于平均得分在3000到10000之间的游戏,显然我不能让人们在30-100秒内看到他们的满分。

有更好的方法吗?我假设它可能与if语句有关?

编辑:我也试过了这个:

if ([scoreNumberLabel.text integerValue]<SCORE) {
        [self runAction:[SKAction runBlock:^{
            [self incrementScoreNumberLabel];
            [self animateScoreNumberLabel];
        }]];
    }

它几乎没有变得更快 - 看起来我需要增加1以上才能做到这一点,因为它根本不够快。但是,确保增量器不超过实际分数会变得有点麻烦...... Bleh。

1 个答案:

答案 0 :(得分:1)

您的用户无法以60fps(最常见的显示刷新率)感知单位数增量,而spriteKit似乎被锁定为the devices native refresh rate(这是有意义的)。

正如您所指出的那样,最终得分有很大的机会,这可能让用户等待。

多年前,在街机游戏机上解决了这个问题。试试这个:

  1. 确定一个可接受的长度来计算你的分数......
  2. 使用宽松功能增加update:
  3. SKScene方法的分数

    您可以使用一个基本的缓出功能,该功能可以快速启动,然后减慢最后几位数(当然,您可以使用轻松功能,即在增加总数时加快速度)。

    NB。此方法还可以避免用户设备与期望的帧速率相匹配的问题。