2015-11-29 4 views
5

Я создал игру с SceneKit scene в UIViewController.Convert touch location UITapGestureRecognizer для SpriteKit - Swift

Я реализовал UITapGestureRecognizer так:

// TAP GESTURE 

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

И в handleTap функции:

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 

     } 

    } 

} 

Imagine, что позиция myNode «s является (x: 150.0, y: 150.0). Проблема в том, что touchPosition.y находится в противоположном положении y позиции y myNode.

Как я могу инвертировать y положение касания?

Спасибо!

ответ

7

Попробуйте вместо этого, его точный для меня: -

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

Где реализация convertPointFromView? –

+0

это переопределение didMovetoView метод не вызывает в моем классе UIviewcontroller. Зачем? – Hitesh

Смежные вопросы