ios - Confuso evento táctil invertido en Swift
sprite-kit touchesbegan (1)
En mi función
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)")
}
}
Obtengo el valor Y invertido. Si hago clic en la parte superior obtengo ~ 0 valor y si hago clic en la parte inferior obtengo un valor alto. Esto hace que mi sprite im moving se mueva en la dirección Y incorrecta.
Sin embargo, si elimino ''.view'' en self.view funciona como debería. ¿Alguien sabe por qué se invierte cuando uso self.view?
Como explica Whirlwind en el comentario debajo de su pregunta, esto sucedió porque con usted indica SKScene
(SpriteKit) y con self.view
utiliza SKView
(subclase UIView para sistema UIKit):
El sistema de coordenadas UIKit para iOS tiene su origen en la esquina superior izquierda del área de dibujo, y los valores positivos se extienden hacia abajo y hacia la derecha desde allí.
El sistema de coordenadas SpriteKit usa el mismo sistema de coordenadas en iOS y OS X , tiene el origen (0,0) en la esquina inferior izquierda y la coordenada (1334,750) en la esquina superior derecha.