确定 UITouch 是否在 SKLabelNode 框架内
Determine if UITouch is within SKLabelNode frame
我的目标是查明 UITouch 是否发生在 SpriteKit 标签节点内。该视图是一个 SKView。我使用的代码(如下)的问题是触摸和矩形似乎在不同的坐标系中。
我可以使用简单的数学来纠正这个问题,但是有没有简单的方法来纠正这个问题?还是我应该这样做的另一种方式?
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for t in touches {
let position = t.location(in: view)
//if inside startButton
if (startButton?.frame.contains(position))! {
debugPrint("yes")
}
}
}
我假设您正在场景中覆盖 touchesBegan
。如果是这样,请尝试使用 let position = t.location(in: self)
,即将 view
替换为 self
。这样你就可以获得场景本身的位置,而不是持有场景的视图中的位置。
希望对您有所帮助!
我的目标是查明 UITouch 是否发生在 SpriteKit 标签节点内。该视图是一个 SKView。我使用的代码(如下)的问题是触摸和矩形似乎在不同的坐标系中。
我可以使用简单的数学来纠正这个问题,但是有没有简单的方法来纠正这个问题?还是我应该这样做的另一种方式?
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for t in touches {
let position = t.location(in: view)
//if inside startButton
if (startButton?.frame.contains(position))! {
debugPrint("yes")
}
}
}
我假设您正在场景中覆盖 touchesBegan
。如果是这样,请尝试使用 let position = t.location(in: self)
,即将 view
替换为 self
。这样你就可以获得场景本身的位置,而不是持有场景的视图中的位置。
希望对您有所帮助!