2016-08-22 7 views
1

我有一個簡單的遊戲。你從一個球開始,然後反彈,直到你得到10分。當你達到10分時,會出現另一個球(以便到達下一個地標可以更快)。當達到20分時,出現三分球。我已經設置好了,但是我需要知道如何使用case執行if聲明。如果達到某個分數,請添加Sprite

這是我要實施的聲明。

if (score == 10) && secondball.parent == nil { 

這是我到目前爲止有:

import SpriteKit 

class GameScene: SKScene { 

override func didMoveToView(view: SKView) { 

let ball = Ball() 

    ball.position = CGPoint(x:self.frame.midX, y:440) 

    addChild(ball) 



    ball.physicsBody = SKPhysicsBody(circleOfRadius: 90) 
    ball.physicsBody?.dynamic = true 
    ball.physicsBody?.allowsRotation = false 

    ball.physicsBody?.friction = 0 
    ball.physicsBody?.angularDamping = 0 
    ball.physicsBody?.linearDamping = 0 
    ball.physicsBody?.usesPreciseCollisionDetection = true 
    ball.physicsBody!.categoryBitMask = 0 




override func update(currentTime: CFTimeInterval) { 


    if shouldUpdateTexture { 
     shouldUpdateTexture = false 
     switch score { 
    case 10...19: backgroundNode.texture = SKTexture(imageNamed: "orangebackground") 

      let secondball = Ball() 
      secondball.position = CGPoint(x:self.frame.midX * 1.65, y: 440) 
      addChild(secondball) 



      secondball.physicsBody = SKPhysicsBody(circleOfRadius: 90) 
      secondball.physicsBody?.dynamic = true 
      secondball.physicsBody?.allowsRotation = false 

      secondball.physicsBody?.friction = 0 
      secondball.physicsBody?.angularDamping = 0 
      secondball.physicsBody?.linearDamping = 0 
      secondball.physicsBody?.usesPreciseCollisionDetection = true 
      secondball.physicsBody!.categoryBitMask = 0 



    case 20...29: backgroundNode.texture = SKTexture(imageNamed: "yellowbackground") 

    let thirdball = Ball() 
    thirdball.position = CGPoint(x:self.frame.midX * 0.35, y:440) 
    addChild(thirdball) 



    thirdball.physicsBody = SKPhysicsBody(circleOfRadius: 90) 
    thirdball.physicsBody?.dynamic = true 
    thirdball.physicsBody?.allowsRotation = false 

    thirdball.physicsBody?.friction = 0 
    thirdball.physicsBody?.angularDamping = 0 
    thirdball.physicsBody?.linearDamping = 0 
    thirdball.physicsBody?.usesPreciseCollisionDetection = true 
    thirdball.physicsBody!.categoryBitMask = 0 

    case 30...39: backgroundNode.texture = SKTexture(imageNamed: "greenbackground") 
    case 40...49: backgroundNode.texture = SKTexture(imageNamed: "bluebackground") 
    case 50...59: backgroundNode.texture = SKTexture(imageNamed: "darkbluebackground") 

    if ball.parent != nil { 
     let ball = Ball() 

     ball.position = CGPoint(x:self.frame.midX, y:440) 

     addChild(ball) 



     ball.physicsBody = SKPhysicsBody(circleOfRadius: 90) 
     ball.physicsBody?.dynamic = true 
     ball.physicsBody?.allowsRotation = false 

     ball.physicsBody?.friction = 0 
     ball.physicsBody?.angularDamping = 0 
     ball.physicsBody?.linearDamping = 0 
     ball.physicsBody?.usesPreciseCollisionDetection = true 
     ball.physicsBody!.categoryBitMask = 0 


      } 

case:10...19作品也是如此的case:20...29,但case 50...59我只想另一球露面,如果前一個是不存在。

如果您需要更多或更少的信息,請在下面評論。我會立即更新它。

------ UPDATE ---- 代碼運行良好,除非得分達到50以檢查球是否存在。

謝謝,喬丹。

+0

哇,不僅你從最後一個問題中選出了最差的答案,你顯然沒有讀到正在發生的事情,並將它們兩個版本合併在一起,因爲守衛,UpdateUpTexture總是成立,所以如果後面的語句是無意義。失去防護 – Knight0fDragon

+0

你需要清理這個代碼,目前它不可編譯。格式正確,以便人們可以閱讀和理解它。 – Knight0fDragon

+0

@KnightOfDragon感謝您的建議。 –

回答

1

case 50...59:只需添加一個if語句來檢查球是否已經存在。添加這樣的東西:

if thirdBall.parent == nil { 

addChild(thirdBall) 
// Whatever other code you want to run only if the ball needs to be added to the scene 

} 

希望這有助於!

+0

執行此操作時,遊戲崩潰 –

+0

您可以更新您的問題中的代碼,以便我可以看到它。並添加其餘的'if shouldUpdateTexture'語句 – Nik

+0

代碼已被更新。當分數達到50時,代碼崩潰,當檢查球是否存在時。如果是這樣,它不會添加一個球。如果不是,則會添加一個球。 –

相關問題