我正试图通过触摸屏幕在屏幕上拖动SKSpirteNode。但我希望能够持续移动精灵,目前我的代码只将精灵移动到我触摸的位置,但如果我按住并移动精灵,精灵将不会跟随。此外,我不想"不得不"触摸SKSpriteNode来激活运动,我想触摸屏幕上的任何地方,并从该SKSpriteNode获得运动响应。
这是我当前的代码:
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
// SpriteNode I want to drag around
basket = SKSpriteNode(texture: basketTexture)
self.addChild(basket)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
var nodeTouched = SKNode()
var currentNodeTouched = SKNode()
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
nodeTouched = self.nodeAtPoint(location)
basket.position = location
}
谢谢你的帮助。
我通过使用函数touchesMoved而不是touchesBegan解决了这个问题,并且工作非常顺利。这是最后的代码:
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
// SpriteNode I want to drag around
basket = SKSpriteNode(texture: basketTexture)
self.addChild(basket)
}
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
var nodeTouched = SKNode()
var currentNodeTouched = SKNode()
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
nodeTouched = self.nodeAtPoint(location)
basket.position = location
}