此问题已在How do I drag and drop a sprite in Swift 3.0?中解决。
但是 ...这给了我手指和精灵之间的严重滞后。使用Xcode,请尝试使用SpriteKit创建从头开始的iOS游戏应用程序。注释掉所有触摸处理代码,并将其替换为以下
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
以下帖子 all 推荐了相同的方法-在position
中设置touchesMoved()
。
我实现了一个荒唐的骇客(请参阅Using SpriteKit inside UIKit),其中有小的SKViews
(每个精灵一个),可以使用UIGestureRecognizers
快速拖动。但是每个视图都需要自己的SKScene
,它似乎与原始意图相反(或正交?)。