как определить область узла, чтобы сделать его кнопкой

Как всегда, я не знаком со Swift и SpriteKit, поэтому прошу прощения.

Я создаю кнопку, которая меняет сцену. Я использую простой код, который определяет, находится ли касание в области SKNode, и если да, то это меняет сцену.

Моя проблема в том, что node.position определяется CGPoint, а не областью, поэтому, когда вы касаетесь экрана, вы никогда не касаетесь узла.

Любое предложение?

Я не знаю, как решить проблему.

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches {
        let location = touch.location(in: self)
        let touchedNode = atPoint(location)
        if touchedNode.name == "B" {
            let menuScene = MenuScene(size: view!.bounds.size)
            view!.presentScene(menuScene)
        }
    }
}

person Scudice    schedule 03.05.2019    source источник
comment
Я немного изменил функцию, она все еще не работает, но имеет больше смысла:   -  person Scudice    schedule 04.05.2019


Ответы (1)


РЕШЕНО! Я создал узел "B" с инициализатором текста, а не с инициализатором имени, поэтому не смог его найти.

let b = SKLabelNode(name: "B")
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches {
        let location = touch.location(in: self)
        let nodeB = self.childNode(withName: "B")
        let frameB = nodeB!.calculateAccumulatedFrame()
        let minX = frameB.minX
        let maxX = frameB.maxX
        let minY = frameB.minY
        let maxY = frameB.maxY
        if location.x > minX && location.x < maxX {
            if location.y > minY && location.y < maxY {
                let gameScene = GameScene(size: view!.bounds.size)
                view!.presentScene(gameScene)
            }
        }
    }
}
person Scudice    schedule 04.05.2019