2015-11-29 20 views
5

SceneKit scene ile UIViewController içine bir oyun oluşturdum.SpriteKit için UITapGestureRecognizer öğesinin dokunma konumunu çevirin - Swift

// TAP GESTURE 

let tapGesture = UITapGestureRecognizer(target: self, action: "handleTap:") 
sceneView.overlaySKScene?.view!.addGestureRecognizer(tapGesture) 

Ve handleTap işlevi:

func handleTap(sender: UIGestureRecognizer) { 

    if sender.state == UIGestureRecognizerState.Ended { 

     var touchLocation = sender.locationInView(sender.view) 

     touchLocation = self.view.convertPoint(touchLocation, toView: self.view) 

     let touchedNode = sceneView.overlaySKScene?.nodeAtPoint(touchLocation) 

     if touchedNode == myNode { 

      // DO SOMETHING 

     } 

    } 

} 

myNode 'ın pozisyonu (x: 150.0, y: 150.0) olduğunu düşünün

Ben böyle UITapGestureRecognizer uyguladı. Sorun, touchPosition.y'un myNode y konumunun y konumunun tersinde olmasıdır.

Dokunuşun konumunu nasıl tersine çevirebilirim?

Teşekkürler!

cevap

7

benim için bunun yerine doğru bu deneyin: -

override func didMoveToView(view: SKView) { 

    let tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("tap:")) 
    tap.numberOfTapsRequired = 1 

    view.addGestureRecognizer(tap) 
} 

func tap(sender:UITapGestureRecognizer){ 

    if sender.state == .Ended { 

     var touchLocation: CGPoint = sender.locationInView(sender.view) 
     touchLocation = self.convertPointFromView(touchLocation) 

    } 
} 
+0

Nerede convertPointFromView uygulanmasıdır? –

+0

bu geçersiz kılma, UIviewcontroller sınıfımda didMovetoView yöntemini çağırmıyor. niye ya? – Hitesh

İlgili konular