objective-c - Sprite Kit 动画分数递增

标签 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。

最佳答案

您的用户将无法感知 60fps(最常见的显示器刷新率)下的个位数增量,并且 spriteKit 似乎锁定到 the devices native refresh rate。 (这是有道理的)。

正如您所指出的,最终分数有可能出现很大的变化,这可能会让用户等待。

这个问题多年前就在街机游戏机中得到了解决。试试这个:

  1. 确定可接受的长度来计算您的分数……
  2. SKSceneupdate: 方法中使用缓动函数增加分数

您可能会使用一个基本的缓出功能,它开始时很快,然后在最后几位减慢(当然您可以使用缓入,即随着总数的增加而变得更快)。

注意。这种方法还将避免用户设备与期望的帧速率不匹配的问题。

关于objective-c - Sprite Kit 动画分数递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26952197/

相关文章:

ios - 以编程方式创建的按钮不响应用户的点击

jquery - 使用 css3 动画加载网站

java - 在动画模拟中将逻辑与图形分离

jquery 图像淡入

Swift 比较两个颜色对象以查看它们的颜色是否与触摸相同

ios - 制作游戏结束场景

objective-c - 绘制 NSRect 时出现问题

ios - 在横向模式下应用变换/旋转后获取 ImageView 精确帧

带有部分的 iOS tableView - 如何获取全局索引

ios - SKShapeNode.fillColor 不等于原始 UIColor