我有一个简单的代码,重复使用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中触摸时发生, 任何帮助将不胜感激
答案 0 :(得分:0)
在任何游戏编程中,显示水平滚动的理想方式是使用2个背景图像并在水平方向上逐个添加。移动两者,每当background1越过最左边0(从右到左滚动)时,将其位置更改为宽度为x。使用主游戏循环增加两个背景位置。在你的情况下使用一个名为allowScroll的标志,在touchesBegin时设置为true。如果allowScroll设置为true,则在游戏循环中增加/减少背景图像位置。
答案 1 :(得分:0)
将代码移动到touchesMoved函数内部以使背景相应地移动到触摸