如何为iPhone游戏创建功能性HUD?

时间:2015-03-12 00:07:15

标签: ios objective-c iphone sprite-kit

我正在创建一个迷你iOS游戏,让我的目标C湿透了。无论如何,我有一个工作原型,一个功能有点的HUD。它显示了得分,行进距离以及玩家之前的高分。但是,我很难实现玩家剩下多少生命。有人可以帮助我或指出我如何做到这一点的正确方向?任何帮助表示赞赏。在此先感谢您的帮助。

以下是我的生活代码和HUD,如果需要,我会提供更多代码。

    - (void)startTheGame{

_lives = 3;
double curTime = CACurrentMediaTime();
_gameOverTime = curTime + 30.0;
_nextAsteroidSpawn = 0;
_gameOver = NO;

for (SKSpriteNode *asteroid in _asteroids) {
    asteroid.hidden = YES;
}

for (SKSpriteNode *laser in _shipLasers) {
    laser.hidden = YES;
}
_ship.hidden = NO;
//reset ship position for new game
_ship.position = CGPointMake(self.frame.size.width * 0.1, CGRectGetMidY(self.frame));

//setup to handle accelerometer readings using CoreMotion Framework
[self startMonitoringAcceleration];

_highscore.text = [NSString stringWithFormat:@"High: %li pt", [RWGameData sharedGameData].highScore];
_score.text = @"0 pt";
_distance.text = @"";
lives.text = @" 3";


    }

HUD:

    -(void)setupHUD{
_score = [[SKLabelNode alloc] initWithFontNamed:@"Futura-CondensedMedium"];
_score.fontSize = 12.0;
_score.position = CGPointMake(50, 7);
_score.fontColor = [SKColor blackColor];
[self addChild:_score];

_distance = [[SKLabelNode alloc] initWithFontNamed:@"Futura-CondensedMedium"];
_distance.fontSize = 12.0;
_distance.position = CGPointMake(115, 7);
_distance.fontColor = [SKColor cyanColor];
[self addChild:_distance];

_highscore = [[SKLabelNode alloc] initWithFontNamed:@"Futura-CondensedMedium"];
_highscore.fontSize = 12.0;
_highscore.position = CGPointMake(200, 7);
_highscore.fontColor = [SKColor redColor];
[self addChild:_highscore];

lives = [[SKLabelNode alloc] initWithFontNamed:@"Futura-CondensedMedium"];
lives.fontSize = 12.0;
lives.position = CGPointMake(250, 7);
lives.fontColor = [SKColor yellowColor];
[self addChild:_lives];
    }

2 个答案:

答案 0 :(得分:0)

很难说你发布的代码但我确实注意到你使用lives = [[SKLabelNode alloc] initWithFontNamed:@"Futura-CondensedMedium"];然后添加[self addChild:_lives];

在startTheGame方法中,您将3分配给_lives  这显然不适用于SKLabelNode。

如果这不能解决问题,请仔细检查您是否将lives声明为SKLabelNode而不是其他内容。

答案 1 :(得分:-1)

如果_lives的类型为int且livesLabel的类型为SKLabelNode,则可以执行以下操作以在需要时设置标签节点的文本

livesLabel.text = [NSString stringWithFormat:@"Lives: %d",_lives];

也在最后一行中将_lives添加到self,这是一个int或NSInteger(无论你将它定义为什么)。它应该是livesLabel

[self addChild:livesLabel];