• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何解决这个分数?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:25:15 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在开发一款游戏,我希望每次将某些内容添加到屏幕上时它都会计数。我已经设置了 NSMutableArrays 来包含我添加到屏幕的内容。有 6 个数组,每个数组每 x 秒生成一个项目。这是我为评分设置的:

if (!_scoreLabel) {
    _scoreLabel = [SKLabelNode labelNodeWithFontNamed"DIN Condensed"];
    _scoreLabel.fontSize = 40;
    _scoreLabel.position = CGPointMake(self.frame.size.width - 20, self.frame.size.height - 40);
    _scoreLabel.fontColor = [SKColor colorWithHue:0 saturation:0 brightness:1 alpha:0.5];
    _scoreLabel.zPosition = 2.0;
    [self addChild:_scoreLabel];
}

//add each debris array
_scoreLabel.text = [NSString stringWithFormat"%d", _debris.count + _debris2.count + _debris3.count + _debris4.count + _debris5.count + _debris6.count];

此代码在玩游戏的最初一段时间(从 _debris1 - _debris3)运行良好,然后当 debris4 和其他代码开始生成时,得分并没有正确地加 1 加 1。相反,它开始添加分数 block ,(如果那令人困惑:对于游戏的第一部分,每次将一 block 碎片添加到游戏中时,它都会添加 1,然后当 4 和其他人来时,它开始向 _scoreLabel 添加 3, 7, 3, (随机数), 分数。

这样做有什么理由吗? 是否可以让 NSMutabaleArray 包含所有这些数组作为子数组?我应该以不同的方式计算这个分数吗?

如果需要,这是一个示例 spawnDebris 方法:

-(void)spawnDebris {

    SKSpriteNode * debris = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed"debris1.png"] size:CGSizeMake(70, 70)];
    debris.zPosition = 1.0;

    debris.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:30];
    debris.physicsBody.allowsRotation = NO;
    debris.physicsBody.categoryBitMask = CollisionDebris;

    RandomPosition = arc4random() %300;
    RandomPosition = RandomPosition + 20;
    debris.position = CGPointMake (RandomPosition, self.size.height + 40);

    [_debris addObject:debris]; //_debris is the NSMutableArray 
    [self addChild:debris];

    //next Spawn:
    [self runAction:[SKAction sequence[
        [SKAction waitForDuration:deb1Time],
        [SKAction performSelectorselector(spawnDebris) onTarget:self],
    ]]];

    if (_dead == YES) {
        [self removeAllActions];
    }

    if (debris.position.y > 568) {
        [self removeFromParent];
    }

提前致谢。 如果需要任何其他信息,请告诉我。



Best Answer-推荐答案


您的问题在于您的代码逻辑。您的 spawnDebris 方法每隔 deb1Time 秒递归调用一次,这使其独立。如果您的其他碎片方法以相同的方式运行,那么您将无法真正控制事情何时发生。解决方案是在您的碎片方法中包含一个 [self updateScore],以便在进行更改时更新分数。

关于ios - 如何解决这个分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23034695/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap