我已经有一些运气学习如何在Sprite-kit中无限滚动背景但是我现在这样做的方式只向左滚动。我有一个左右移动按钮,还需要下面的方法无限滚动到右边和左边。我自己试图实现它,但结果很糟糕,任何帮助都表示赞赏。
iv如何滚动
for (int i = 0; i < 2; i++) {
SKSpriteNode * bg = [SKSpriteNode spriteNodeWithImageNamed:@"bgimage"];
bg.anchorPoint = CGPointZero;
bg.position = CGPointMake(CGRectGetMidX(self.frame), self.frame.origin.y);
bg.name = @"snow1";
[self addChild:bg];
}
和更新方法中的&#34;右键&#34;被推了:
[self enumerateChildNodesWithName:@"snow1" usingBlock: ^(SKNode *node, BOOL *stop) {
SKSpriteNode *bg = (SKSpriteNode *) node;
bg.position = CGPointMake(bg.position.x - 5, bg.position.y);
if (bg.position.x <= -bg.size.width) {
bg.position = CGPointMake(bg.position.x + bg.size.width * 2, bg.position.y);
}
}];
此方法仅向左滚动,我还需要背景无限滚动到右边的&#34;左按钮&#34;被推了。
答案 0 :(得分:1)
滚动到左侧时,您正在递减bg.position.x
。显然,如果要将节点移动到右侧,则需要增加bg.position.x
:
// if left button is pressed
[self enumerateChildNodesWithName:@"snow1" usingBlock: ^(SKNode *node, BOOL *stop) {
SKSpriteNode *bg = (SKSpriteNode *) node;
bg.position = CGPointMake(bg.position.x + 5, bg.position.y);
if (bg.position.x >= bg.size.width) {
bg.position = CGPointMake(bg.position.x - bg.size.width * 2, bg.position.y);
}
}];