gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 20:24:49 25 4
gpt4 key购买 nike

所以在我的“游戏结束”场景中,我想像某些游戏一样为分数计数设置动画。我写了一个这样的方法:

-(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com