2017-08-05 47 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) 
     } 
    } 
} 
相关问题