0

Im making a flappy bird clone and when the bird dies, the spriteNode with restart button pop ups, but the fist click is stoping animation (if there any) and second click forse the restart() function

heres how i make SpriteNode menu with button:

 let menu = SKSpriteNode(texture: self.groundTex)
            menu.name = "menu"
            menu.position = CGPoint(x: 0, y: 0)
            menu.zPosition = 20
            let restartButton = SKSpriteNode(texture: self.heroTexture)
            restartButton.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
            restartButton.zPosition = 40
            restartButton.name = "restart"

            let moveMenu = SKAction.moveTo(CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2), duration: 1.0)

            self.menuNode.addChild(menu)
            menuNode.addChild(restartButton)
            self.addChild(menuNode)

            menu.runAction(SKAction.sequence([
                moveMenu,
                SKAction.waitForDuration(NSTimeInterval(1.0)),
                makeGameEnd
                ]), withKey: "gameover"

here is how i detect touch:

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

    let touch  = touches.first
    let location = touch?.locationInNode(self)
    let node: SKNode = nodeAtPoint(location!)



    if node.name == "restart" {
       restart()
    }

UPDATE my restart():

func restart() {
let scene = GameScene(size: self.size)
scene.scaleMode = .AspectFill
self.view?.presentScene(scene)
}

1 Answers1

0

You can check for a double tap like this

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

    let touch  = touches.first
    let location = touch?.locationInNode(self)
    let node: SKNode = nodeAtPoint(location!)

if touch.tapCount % 2 == 0 {

    if node.name == "restart" {
       restart()
    }
}
}
Daniel Mihaila
  • 585
  • 1
  • 6
  • 13