我有一个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/