J'ai une image de fond dans mon application qui se déplace de haut en bas et se répète. Je souhaite qu'une image différente apparaisse sur l'écran après x temps.Swift Game Scène changer de fond avec le temps ou le score?
Serait-ce le cas?
Quand serait-il préférable d'enlever le bg initial pour éviter trop de couches?
override func didMove(to view: SKView) {
let bgTexture = SKTexture(imageNamed: "bg1.png")
let moveBGanimation = SKAction.move(by: CGVector(dx: 0, dy: -bgTexture.size().height), duration: 4)
let shiftBGAnimation = SKAction.move(by: CGVector(dx: 0, dy: bgTexture.size().height), duration: 0)
let moveBGForever = SKAction.repeatForever(SKAction.sequence([moveBGanimation, shiftBGAnimation]))
var i: CGFloat = 0
while i < 3 {
bg = SKSpriteNode(texture: bgTexture)
bg.position = CGPoint(x: self.frame.midX, y: bgTexture.size().height * i)
bg.size.width = self.frame.width
bg.zPosition = -2
bg.run(moveBGForever)
self.addChild(bg)
i += 1
}
bg2Timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.moveBG2), userInfo: nil, repeats: false)
}
func moveBG2() {
let bg2Texture = SKTexture(imageNamed: "bg2.png")
let moveBG2animation = SKAction.move(by: CGVector(dx: 0, dy: -bg2Texture.size().height * 2), duration: 8)
let shiftBG2Animation = SKAction.move(by: CGVector(dx: 0, dy: bg2Texture.size().height), duration: 0)
let moveBG2Forever = SKAction.repeatForever(SKAction.sequence([moveBG2animation, shiftBG2Animation]))
var j: CGFloat = 0
while j < 3 {
bg2 = SKSpriteNode(texture: bg2Texture)
bg2.position = CGPoint(x: self.frame.midX, y: bg2Texture.size().height + bg2Texture.size().height * j)
bg2.size.width = self.frame.width
bg2.zPosition = -1.5
bg2.run(moveBG2Forever)
self.addChild(bg2)
j += 1
}
}
Cela ressemble beaucoup @Sweeper Je suis juste en difficulté la mise en œuvre correctement. Je ne sais pas trop où placer chaque bit de code? Et quel ordre pour le moment. Je vais continuer à faire bouger les choses et je suis sûr que je vais y arriver. Merci! –
Je pense que c'est presque correct. S'il vous plaît voir la question révisée. J'ai besoin de déclarer bgTexture quelque part en dehors de la fonction je pense que je reçois erreur "Utilisation de l'identificateur non résolu" bgTexture "" –
@AlexIngram Je pense que c'est parce que le nom du paramètre en conflit avec la variable locale. Édité maintenant. – Sweeper