2017-08-05 19 views
1

私はFlappy Birdのクールなバージョンをコーディングしようとしています。ここで、鳥はスコアに左右されるクーラーに変わります。あなたの助けは本当に感謝しています。ここに鳥を宣言する完全なコードがあります。どのように私はスコアに依存して鳥を更新する機能を作ることができますか?スコアに応じてSKSpriteNodeを変更するにはどうすればよいですか?

let birdTexture1 = SKTexture(imageNamed: "bird-01") 
birdTexture1.filteringMode = .nearest 
let birdTexture2 = SKTexture(imageNamed: "bird-02") 
birdTexture2.filteringMode = .nearest 

let anim = SKAction.animate(with: [birdTexture1, birdTexture2],  timePerFrame: 0.2) 
let flap = SKAction.repeatForever(anim) 

bird = SKSpriteNode(texture: birdTexture1) 
bird.setScale(2.0) 
bird.position = CGPoint(x: self.frame.size.width * 0.35, y:self.frame.size.height * 0.6) 
bird.run(flap) 

bird.physicsBody = SKPhysicsBody(circleOfRadius: bird.size.height/2.0) 
bird.physicsBody?.isDynamic = true 
bird.physicsBody?.allowsRotation = false 

bird.physicsBody?.categoryBitMask = birdCategory 
bird.physicsBody?.collisionBitMask = worldCategory | pipeCategory 
bird.physicsBody?.contactTestBitMask = worldCategory | pipeCategory 

self.addChild(bird) 

答えて

0

この動作は、スコア変数のdidSet関数で作成できます。

これは、プレイヤーのスコアを増分(または減少)するたびに実行されます。

var score: Int { 
    didSet { 
     if score > 69 { 
      bird.removeAllActions() 

      let coolBirdTexture1 = SKTexture(imageNamed: "coolbird-01") 
      coolBirdTexture1.filteringMode = .nearest 
      let coolBirdTexture2 = SKTexture(imageNamed: "coolbird-02") 
      coolBirdTexture2.filteringMode = .nearest 

      let anim = SKAction.animate(with: [coolBirdTexture1, coolBirdTexture2], timePerFrame: 0.2) 
      let flap = SKAction.repeatForever(anim) 

      bird.texture = coolBirdTexture1 
      bird.run(flap) 
     } 
    } 
} 
関連する問題