【发布时间】:2018-05-15 20:03:25
【问题描述】:
我有一个 SpriteKit 场景,其中可以有数千个不同的节点。我还在场景中实现了一个单击手势识别器,希望一旦触发手势识别器,我就可以确定场景中哪个节点被触摸。目前,我的(非工作)代码如下所示:
@objc func singleTap(_ sender: UIPinchGestureRecognizer) {
print("single tap gesture recognized")
if sender.numberOfTouches == 1 {
let touchPoint = sender.location(in: self.view)
let touchedNode = self.atPoint(touchPoint)
if let name = touchedNode.name
{
if name == "newMapButton"
{
print("newMapButton Touched")
} else {
print("what did you touch?")
}
}
}
}
手势识别器正在工作。当我触摸新的地图按钮时,我会在控制台中获得“识别单击手势”,但仅此而已。我在这里做错了什么?
【问题讨论】:
-
你的
touchedNode.name不存在 -
另外,您的接触点位于
View坐标中,而不是Scene坐标中 -
如果您的场景类是您的手势代表,则添加
let sceneTouchPoint = convertPoint(fromView:touchPoint)如果您的视图控制器是您的代表,则添加if let skView = view as! SKView{let sceneTouchPoint = skView.convert(touchPoint,to:skView.scene) ...(Rest of code)}
标签: sprite-kit uigesturerecognizer