2017-09-15 3 views
0

ユーザーがdeckOfCardsに触れるたびに、2つのゲームカードの1つを繰り返し表示したいと思います。SpriteNodeでアクションを繰り返す

私はこれまでに一度動作しましたが、deckOfCardsを再びタップすると、カードは変更されません。これを10枚以上のカード名で試しても、どちらもうまくいかなかった。

class GameScene: SKScene { 

let cardname = ["card2", "ace"] 
let randomNumber = Int(arc4random_uniform(13)) 
var deckOfCards = SKSpriteNode() 
var yourCard = SKSpriteNode() 

override func didMove(to view: SKView) { 
    deckOfCards = self.childNode(withName: "deckOfCards") as! SKSpriteNode 
    yourCard = self.childNode(withName: "yourCard") as! SKSpriteNode 
} 

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    self.view?.endEditing(true) 

    for touch: AnyObject in touches { 

     let location = touch.location(in: self) 
     let node : SKNode = self.atPoint(location) 
     if node.name == "deckOfCards" { 
      yourCard.texture = SKTexture(imageNamed: "\(cardname[randomNumber])") 
     } 
    } 
} 

答えて

1

randomNumberは、touchesBeganの外側の定数です。 これは決して変更されません。touchesBeganの中に入れてください。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    self.view?.endEditing(true) 

    for touch: AnyObject in touches { 
     let location = touch.location(in: self) 
     let node = self.atPoint(location) 
     let randomNumber = Int(arc4random_uniform(13)) 

     if node.name == "deckOfCards" { 
      yourCard.texture = SKTexture(imageNamed: "\(cardname[randomNumber])") 
     } 
    } 
} 
+0

速い点で、問題を治しました。どうもありがとう – junxi

関連する問題