在我的函数中
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){
for touch in touches{
let touchLocation = touch.location(in: self.view)
print("X: \(touchLocation.x) Y: \(touchLocation.y)")
}
}
我得到了反转的 Y 值。如果我点击顶部,我会得到〜0值,如果我点击底部,我会得到高值。这使得我的 Sprite 移动到错误的 Y 方向。
但是,如果我删除 self.view 中的“.view”,它就会正常工作。有谁知道为什么当我使用 self.view 时它会颠倒?
最佳答案
正如 Whirlwind 所解释的在您的问题下面的评论中,发生这种情况是因为使用 self
您指示 SKScene
(SpriteKit),而使用 self.view
您使用 SKView
(UIView
UIKit 系统的子类):
iOS的UIKit坐标系的原点位于绘图区域的左上角,正值从该位置向下和向右延伸。
SpriteKit 坐标系在 iOS 和 OS X 上使用相同的坐标系,原点 (0,0) 位于下方- 左上角,(1334,750) 坐标在右上角。
关于ios - Swift 中令人困惑的反向触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41172551/