2017-08-05 48 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) 
     } 
    } 
} 
相關問題