目标移动和背景变化



我正在尝试在Spritekit中创建一个游戏。我有两个目标,没有人,太阳和月亮。起初太阳应该出现在屏幕的右下角,移动到左边。如果太阳出来了对于屏幕,例如在x = -30时,月亮应该出现在屏幕的右角。

另外,我想改变背景颜色。我没有图像,所以我使用RGB。例如,如果太阳到达点x = 50,背景颜色应该变得越来越深,直到月亮出现。我用SkyBlue = 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];
}

你的方法只被调用一次,所以:

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
   }
}

最新更新