Ограничить движение узлов по пути в Swift - PullRequest
0 голосов
/ 04 мая 2018

В SpriteKit есть отслеживание SKAction, которое использует для узла, чтобы следовать пути, который вы создаете с помощью CGMutablePath. Как этот:

path = CGMutablePath()
path?.move(to: point1)
path?.addLine(to: point2)

let follow = SKAction.follow(path!, asOffset: false, orientToPath: true, speed: speedPath!)

Но я хочу заставить игрока свободно перемещать узел вдоль пути, а не какое-либо действие, которое следует за путем. Как будто есть путь с прямой линией или эллипсом, используя путь Безье, и игрок может перемещать узел вдоль пути. Вот изображения:

enter image description here

Есть идеи по этому поводу?

Ответы [ 2 ]

0 голосов
/ 08 августа 2018

Подумав некоторое время, я наконец-то получил то, что хочу. По сути, вам нужно получить каждую точку на пути, будь то линия или Безье. Затем вы можете перемещать узел вдоль ближайших точек.

Вот источник: Найти ближайшую точку

0 голосов
/ 04 мая 2018

Вы можете сделать что-то вроде этого (извините, пока только псевдокод):

touchesBegan {
   if touch on the node, set flag.
}

touchesMoved {
   if flag not set, return
   if touch is on path {
      Use SKACtion 'follow path' to move node to touch location
   } else {
      stop the node's movement /* Touch has moved away from path */
      clear flag
   }

touchesEnded {
   clear flag
   stop node if moving
}
...