是否可以使用 UITapGestureRecognizer 获取多个 SKNode?

Is it possible to get multiple SKNodes with UITapGestureRecognizer?

我目前在同一个 SKScene 上有多个球。我处理 GameScene 中的所有触摸和手势。下面是我用来检测哪个节点被触摸的代码,它有效。

我不确定的是,因为在真实设备上使用它时总会有一些 touchesMoved,是否有可能超过一个节点同时接收点击?如果是这样,我显然需要以不同的方式编写代码。

@objc func tappedView(_ sender:UITapGestureRecognizer) {

    if sender.state == .ended{
        let point : CGPoint = sender.location(in: self.view)
        var post = sender.location(in: sender.view)
        post = self.convertPoint(fromView: post)
        
        if let touchNode = self.atPoint(post) as? MyBall{
            //the declaration below is just so I have somewhere to stop in the debugger
            var x = 1 
        }
     }
}

使用nodes(at:)获取一个点的多个节点。

@objc func tappedView(_ sender:UITapGestureRecognizer) {

    if sender.state == .ended{
        let point : CGPoint = sender.location(in: self.view)
        var post = sender.location(in: sender.view)
        post = self.convertPoint(fromView: post)
        

        for touchNode in self.nodes(at:post){
            //the declaration below is just so I have somewhere to stop in the debugger
            var x = 1 
        }
     }
}

https://developer.apple.com/documentation/spritekit/sknode/1483072-nodes