Это было решено в Как перетащить спрайт в Swift 3.0? .
Но ... это дает мне плохую задержкумежду пальцем и спрайтом.С Xcode попробуйте создать приложение iOS Game с нуля, используя SpriteKit.Закомментируйте весь код обработки касания и замените его следующим
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
let t = touches.randomElement()!
self.spinnyNode?.position = t.location(in:self)
}
(вам также придется сделать несколько очевидных вещей, чтобы spinnyNode
оставался видимым.)
Результат показан здесь на http://andrewduncan.net/drag/drag2.m4v
В следующих постах все рекомендуется тот же подход - установка position
в touchesMoved()
.
Я реализовал хакерский взлом (см. Использование SpriteKit внутри UIKit ), где у меня есть маленькийSKViews
(по одному на спрайт), которые можно быстро перетаскивать с помощью UIGestureRecognizers
.Но каждому представлению нужен свой SKScene
, который кажется обратным (или ортогональным?) Первоначальному замыслу.