我正在尝试在Spritekit中创建一个游戏。 我有2个目标,没有身体,太阳和月亮。起初是太阳 应该在屏幕的右角产生,向左移动。如果太阳出来了 例如,屏幕的在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];
}
答案 0 :(得分: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
}
}