我有一个SKNode,一种操纵杆,插入到ViewController中显示的SKView中,如下所示:

class FeedVC: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
    let joystick = Joystick()

    override func viewDidLoad() {
        super.viewDidLoad()
        let scene = SKScene(size: joystickView.frame.size)
        scene.backgroundColor = SKColor.white
        scene.addChild(joystick)
        joystick.position = CGPoint(x: scene.size.width / 2, y: scene.size.height / 2)
        joystickView.presentScene(scene)
    }
}


如何使用功能touchesMoved()仅检测操纵杆上的触摸?如果我重写此方法,它将在所有视图中检测到触摸。
我只找到答案,其中该类是SKScene的子类,而不是像我的UIViewController的子类。

最佳答案

通过使用touchesMoved(),您可以像这样检测节点的触摸:

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches {
        let location = touch.location(in: self)
        let node : SKNode = self.atPoint(location)

        if node.name == "joystick" {
            // Something, something, something...
        }
    }
}


通过这样做,您需要首先设置节点的名称。

关于ios - 在ViewController中检测SKNode的触摸,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54678007/

10-12 05:52