2015-12-23 2 views
1

У меня возникли проблемы с обнаружением касания конкретного узла. Вот что мне нужно далеко.SKSpriteNode touch обнаружен swift

let playagain = SKSpriteNode(imageNamed: "PlayAgain.png") 

override func didMoveToView(view: SKView) { 
    super.didMoveToView(view) 

} 

тогда, когда игрок умирает, эти два узла поднимаются вверх.

playagain.position = CGPoint(x:frame.size.width * 0.5, y: frame.size.height * 0.5) 
    addChild(playagain) 

    gameover.position = CGPoint(x:frame.size.width * 0.5, y: frame.size.height * 0.75) 
    addChild(gameover) 

все, что работает над. узел появляется на экране, где я спросил, я просто не могу заставить его показать, что я нажал на него. , поскольку вы можете видеть, что узел называется playagain, когда щелкнул узел playagain, я хочу обновить игру. что я до сих пор ниже.

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 

    for touch in touches { 
     let location = (touch as! UITouch).locationInNode(self) 
     let play = self.nodeAtPoint(location) 
     if play.name == "playagain" { 

      println("touched") 
     } 
    } 
} 

спасибо!

ответ

1

Вы не используете новейший Xcode? Ваши прикосновения стали код не должен работать с быстрой 2 и Xcode 7.

Попробуйте

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    for touch in touches { 
     let location = touch.locationInNode(self) 

     if playagain.containsPoint(location) { 

     /// playagain was pressed, do something 
     } 
    } 
} 

или это

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    for touch in touches { 
     let location = touch.locationInNode(self) 
     let touchedNode = self.nodeAtPoint(location) 

     if touchedNode == playagain { 

     /// playagain was pressed, do something 
     } 
    } 
} 
+0

Yea, который работал спасибо! –

+0

Не могли бы вы пометить вопрос как ответ. благодаря – crashoverride777