0

我正在尝试在 Spritekit 中创建游戏。我有两个目标,没有身体,太阳和月亮。起初,太阳应该在屏幕的右上角产生,向左移动。如果太阳在屏幕外,例如在 x = -30 时,月亮应该出现在屏幕的右上角。

另外,我想更改背景颜色。我没有图像,所以我使用 RGB。例如,如果太阳到达点 x = 50,则背景颜色应该越来越暗,直到月亮出现。我使用天蓝 = 135,206,250。

我的代码不起作用,太阳向左移动,但月亮没有出现。

-(void)Background{

Sun = [SKSpriteNode spriteNodeWithImageNamed:@"Sun.png"];
Sun.size = CGSizeMake(60, 60);
Sun.position = CGPointMake(360, 500);

SKAction * MoveLeft = [SKAction moveByX:-400 y:0 duration:15];

[Sun runAction:MoveLeft];
[self addChild:Sun];

Moon = [SKSpriteNode spriteNodeWithImageNamed:@"Moon.png"];
Moon.size = CGSizeMake(60, 60);
Moon.position = CGPointMake(360, 500);

if (Sun.position.x < 60) {
    [Moon runAction:MoveLeft];
}

[self addChild:Moon];

}
4

1 回答 1

1

您的方法仅被调用一次,因此:

if (Sun.position.x < 60) {
   [Moon runAction:MoveLeft];
}

只调用一次。

解决方案:

覆盖场景上的更新功能(在每帧更新时运行):

-(void)update:(NSTimeInterval)currentTime {

   if (Sun.position.x < 60 && Sun!=nil) {
      Moon = [SKSpriteNode spriteNodeWithImageNamed:@"Moon.png"];
      Moon.size = CGSizeMake(60, 60);
      Moon.position = CGPointMake(360, 500);
      [Moon runAction:MoveLeft];
      [self addChild:Moon];
      Sun = nil;
      [Sun removeFromParent]; // Make sure that this code isn't called again
   }

}
于 2014-06-02T12:44:25.687 回答