如果这是一个愚蠢的问题我提前道歉,但我正在学习,我似乎无法找到任何帮助。我的大部分经验都是使用故事板,所以SpriteKit是我第一次以编程方式做所有事情。
我有一个侧向滚动的2D游戏,非常类似于Flappy Bird。每当玩家达到10的倍数时,我需要改变背景。背景是一个图像,它正缓慢地向屏幕左侧移动并被其自身替换。
问题是,当它达到10时,我无法用另一张图像替换图像。我已经使用zPosition成功地在旧图像上添加了一个新图像,但原始图像仍在下面,这看起来很笨拙和不稳定。
我试图从父母那里删除原始背景图片,但我似乎无法弄清楚如何做到这一点。
这是我的代码。提前谢谢。
var currentBg = SKTexture(imageNamed: "img/bgYellow.png")
func makeBackground() {
let movebg = SKAction.moveByX(-currentBg.size().width, y: 0, duration: 9)
let replacebg = SKAction.moveByX(currentBg.size().width, y: 0, duration: 0)
let movebgForever = SKAction.repeatActionForever(SKAction.sequence([movebg, replacebg]))
for var i:CGFloat=0; i<3; i++ {
bg = SKSpriteNode(texture: currentBg)
bg.position = CGPoint(x: currentBg.size().width/2 + currentBg.size().width * i, y: CGRectGetMidY(self.frame))
bg.size.height = self.frame.height
bg.runAction(movebgForever)
movingObjects.addChild(bg)
}
}
fun didMoveToView() {
//Set up game, etc...
makeBackground()
}
if score == 10 {
//I've tried adding the following line to remove the first image, but no luck
//movingObjects.removeChildrenInArray([bg])
currentBg = SKTexture(imageNamed: "img/bgRed.png")
makeBackground()
} else if score == 20 {
currentBg = SKTexture(imageNamed: "img/bgBlue.png")
makeBackground()
} //Else etc...
答案 0 :(得分:0)
您正在更改纹理而不是background
节点纹理。
var background: SKSpriteNode!
然后你需要创建你的背景
background = SKSpriteNode(texture: SKTexture(imageNamed: "img/bgYellow.png"), color: UIColor.clearColor(), size: CGSizeMake(world.frame.size.width, world.frame.size.height))
background.position = CGPointMake(world.frame.size.width / 2, world.frame.size.height / 2)
// etc
要更改背景图片:
if score == 10 {
background.texture = SKTexture(imageNamed: "img/bgRed.png")
makeBackground()
}