2014-10-12 7 views

Odpowiedz

0

Musisz porównać lokalizację Touch na miejscu swojej SKNode

Można uzyskać lokalizację dotknięcia jednej z następujących metod, przy użyciu locationInNode():

  • touchesBegan()
  • touchesMoved()
  • touchesEnded()
+1

trochę więcej szczegółów pls – user3138007

1

Zbadać SceneKitVehicle demo Apple. Ktoś uprzejmie ported it to Swift.

Kod, który chcesz, znajduje się w pliku GameView.swift. W GameView zobaczysz nadpisanie touchBank. Oto moja wersja dla Swift 2.1:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    guard let scene = self.overlaySKScene else { 
     return 
    } 

    let touch = touches.first! 
    let viewTouchLocation = touch.locationInView(self) 
    let sceneTouchPoint = scene .convertPointFromView(viewTouchLocation) 
    let touchedNode = scene.nodeAtPoint(sceneTouchPoint) 

    if (touchedNode.name == "Play") { 
     print("play") 
    } 
} 

Jeśli nie jest to jasne; GameView jest ustawiony jako klasa widoku aplikacji za pomocą Storyboard.

Powiązane problemy