ios swift sprite-kit touchesbegan

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.