2017-03-24 18 views
2

私はFlappy Birdのようなゲームを作ろうとしており、バックグラウンドループを無限にしなければなりません。私はチュートリアルをオンラインで見つけましたが、それは私のために働いていないだけで、理由を理解することはできません。Swift 3 - バックグラウンドループが正しく機能しない

これは、これまで

var Background = SKSpriteNode() 
var txtBG = SKTexture(imageNamed: "Background") 
var txtLand = SKTexture(imageNamed: "Ground") 
var Ground = SKSpriteNode() 
var moving:SKNode! 


// Cena 

override func didMove(to view: SKView) { 

    scene?.anchorPoint = CGPoint(x: 0, y: 0) 

    moving = SKNode() 
    self.addChild(moving) 


    //Ground 

    Ground = SKSpriteNode(texture: txtLand) 
    Ground.position = CGPoint(x:0, y: txtLand.size().height * 1.3) 
    Ground.setScale(2.5) 
    self.addChild(Ground) 




    //Background 

    Background = SKSpriteNode(texture: txtBG) 
    Background.setScale(2.0) 
    Background.position = CGPoint(x: self.size.width, y: txtLand.size().height * 5.2) 

    let BGmove = SKAction.moveBy(x: -txtBG.size().width * 2.0, y: txtLand.size().height * 5.2 , duration: TimeInterval(15)) 
    let BGRepo = SKAction.moveBy(x: txtBG.size().width * 2.0, y: txtLand.size().height * 5.2, duration: 0.0) 
    let BGLoop = SKAction.repeatForever(SKAction.sequence([BGmove,BGRepo])) 

    for i in 0 ..< 2 + Int(self.frame.size.width/(txtBG.size().width * 2)) { 
     let i = CGFloat(i) 
     Background = SKSpriteNode(texture: txtBG) 
     Background.setScale(2.0) 
     Background.position = CGPoint(x:txtBG.size().width/2 + txtBG.size().width * i * 2.0, y: txtLand.size().height * 5.2) 
     Background.run(BGLoop) 
     self.addChild(Background) 
    } 

何が起こる背景には水平移動だけでなく、上向きに移動すると、私はその理由を理解していないし始めている私のコードです。

ご協力いただければ幸いです。

答えて

1

背景の移動アクションの背景がxとyで移動します。 SKAction.moveBy(x: CGFloat, y: CGFloat, duration: TimeInterval)を使用する場合は、yを0に設定するか、SKAction.moveTo(x: CGFloat, duration: TimeInterval)を使用してx値のみを移動します。

関連する問題