2016-10-24 9 views
1

Хорошо, так что в настоящее время в моей игре я могу перетащить, пронести и щелкнуть по узлу. Тем не менее, я хочу, чтобы пользователь мог только пронести/щелкнуть узел, и я не хочу, чтобы пользователь мог перетащить узел. Как я могу это сделать?Как я могу щелкнуть спрайт, не перетаскивая его?

Вот мой текущий код:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 

    for touch in touches { 
     let location = touch.location(in: self) 

     if ball.frame.contains(location) { 
      touchPoint = location 
      touching = true 
     } 
    } 
} 

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 
    let touch = touches.first as UITouch! 
    let location = touch!.location(in: self) 
    touchPoint = location 

    for touch in touches { 
     let location = touch.location(in: self) 
     touchPoint = location 
     if touching { 
      if touchPoint != ball.position { 
       let dt:CGFloat = 1.0/60.0 
       let distance = CGVector(dx: touchPoint.x-ball.position.x, dy: touchPoint.y-ball.position.y) 
       let velocity = CGVector(dx: distance.dx/dt, dy: distance.dy/dt) 
       ball.physicsBody!.velocity=velocity 
      } 
     } 
    } 
} 

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
    touching = false 

    for touch in touches { 
     let location = touch.location(in: self) 
     touchPoint = location 
     let node = self.atPoint(location) 
    } 
} 
+0

Пожалуйста, уточните, что вы хотите достичь. – matthiaswitt

+0

Я предполагаю: ваша цель состоит в том, чтобы узел не двигался до тех пор, пока палец не будет выпущен из жестов салфетки, и в этот момент скорость и расстояние движения пальца по экрану определяет скорость и направление движения узла? – Confused

ответ

1

Вот почему UIGestureRecognizers существует. Добавьте на ваш взгляд UIPanGestureRecognizer и используйте метод velocity(in:UIView), чтобы вы знали направление и скорость щелчка.

Обратите внимание: вы не можете устанавливать жесты на узлы, только виды, поэтому вам нужно будет преобразовать из координат вида в координаты сцены, если вы используете только жест.

Вы также можете позволить касанию жестом просочиться до сцены, чтобы обеспечить нормальные сенсорные вызовы, и просто использовать скорость движения жесты.

https://developer.apple.com/reference/uikit/uipangesturerecognizer

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

  • Нет связанных вопросов^_^