Sprite-kit向左/向右滚动

时间:2014-03-21 19:59:28

标签: ios scroll background-image sprite-kit

我已经有一些运气学习如何在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;被推了。

1 个答案:

答案 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);
    }
}];