각 SKSpriteNodes 인 배경에 3 개의 구름이있는 게임에서 작업하고 있습니다. 시차 효과를 만들기 위해 나는 캐릭터가 위로 움직이는 것처럼 화면 아래로 움직일 것입니다. (화면도 위로 움직이고 있습니다).제거한 후 SKSpriteNode 자식을 부모에게 다시 추가합니다.
업데이트 방법에서 화면 하단에 도달하면 제거합니다. 아이폰 4에서 500 배, 아이폰 5에서 588 픽셀이되도록 시야에서 20 배 이상의 Y 위치에 다시 추가하고 싶습니다. 그런 다음 반복해서 반복하십시오.
다음은 SKActions를 체인화하고 시퀀스를 실행하는 것으로 생각할 수 있지만 그 방법이 최선이라고 생각하지 않습니다. 내가 그들을 업데이 트 메서드에서 제거 된 후 다시 추가하는 방법을 찾으려고 노력하고있어.
-(id)initWithSize:(CGSize)size {
...
//Moving Clouds
[self performSelector:@selector(createClouds) withObject:nil afterDelay:.2];
}
-(void)createClouds {
SKSpriteNode *cloud1 = [SKSpriteNode spriteNodeWithImageNamed:@"cloud1"];
cloud1.position = CGPointMake(40, 200);
cloud1.xScale = .5;
cloud1.yScale = .5;
cloud1.name = @"Cloud1";
cloud1.zPosition = 0;
SKAction *moveCloud1 = [SKAction moveToY:-20 duration:15];
[cloud1 runAction:[SKAction repeatActionForever:moveCloud1]];
[self addChild:cloud1];
SKSpriteNode *cloud2 = [SKSpriteNode spriteNodeWithImageNamed:@"cloud2"];
cloud2.position = CGPointMake(300, 320);
cloud2.xScale = .5;
cloud2.yScale = .5;
cloud2.name = @"Cloud2";
cloud2.zPosition = 0;
SKAction *moveCloud2 = [SKAction moveToY:-40 duration:15];
[cloud2 runAction:[SKAction repeatActionForever:moveCloud2]];
[self addChild:cloud2];
SKSpriteNode *cloud3 = [SKSpriteNode spriteNodeWithImageNamed:@"cloud3"];
cloud3.position = CGPointMake(200, 450);
cloud3.xScale = .5;
cloud3.yScale = .5;
cloud3.name = @"Cloud3";
cloud3.zPosition = 0;
SKAction *moveCloud3 = [SKAction moveToY:-200 duration:20];
[cloud3 runAction:[SKAction repeatActionForever:moveCloud3]];
[self addChild:cloud3];
}
-(void)update:(CFTimeInterval)currentTime {
....
// Remove Cloud from parent
[self enumerateChildNodesWithName:@"Cloud1" usingBlock:^(SKNode *node, BOOL *stop) {
if (node.position.x < 0 || node.position.y < 0) {
[node removeFromParent];
//Add node back to the scene at a Y position above the screen then move
// the cloud downwards again. Repeat Forever.
// Exp: Move Cloud 1 to X position 40, Y position 500 (20 pixels above the top of the screen for an iPhone 4s)
}
else {
// Do something?
}
}];
이것으로 끝내 잘되었습니다! 왜 내가 이런 식으로하는 것에 반대하는지 모르겠다. – Paul