如何定义节点区域以使其成为按钮

时间:2019-05-03 14:44:21

标签: swift sprite-kit sknode

一如既往,我对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)
        }
    }
}

1 个答案:

答案 0 :(得分:0)

已解决!我用文本初始化程序而不是名称初始化程序创建了节点“ 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)
            }
        }
    }
}