在Spritkit中开始接触时重复背景

时间:2017-07-15 18:16:52

标签: swift background sprite-kit horizontal-scrolling touchesbegan

我有一个简单的代码,重复使用Spritekit的背景,我希望在任何触摸发生之前背景仍然是静止的,并且只在开始任何触摸时开始动画或滚动

    *// animate the background*

    let background = SKTexture(imageNamed: "bg.png")

    let moveTheBackground = SKAction.move(by: CGVector(dx: -
    background.size().width, dy:0),  duration: 10)

    let backgroundToOriginalPosition = SKAction.move(by: CGVector(dx: 
    background.size().width, dy: 0), duration: 0)

    let animateTheBackground = 
    SKAction.repeatForever(SKAction.sequence([moveTheBackground, 
    backgroundToOriginalPosition]))


    *// loop the background animation*

    var i:CGFloat = 0
    while i < 2 {

        bg = SKSpriteNode(texture: background)
        bg.position = CGPoint(x: background.size().width * i, y: self.frame.midY)
        bg.size.height = self.frame.height
        bg.zPosition = -1
        bg.run(animateTheBackground)
        self.addChild(bg)

        i += 1
    }

我希望这个代码在SpriteKit中触摸时发生, 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

在任何游戏编程中,显示​​水平滚动的理想方式是使用2个背景图像并在水平方向上逐个添加。移动两者,每当background1越过最左边0(从右到左滚动)时,将其位置更改为宽度为x。使用主游戏循环增加两个背景位置。在你的情况下使用一个名为allowScroll的标志,在touchesBegin时设置为true。如果allowScroll设置为true,则在游戏循环中增加/减少背景图像位置。

答案 1 :(得分:0)

将代码移动到touchesMoved函数内部以使背景相应地移动到触摸