2014-10-05 81 views
1

我试图通过触摸屏幕拖动屏幕周围的SKSpirteNode。但我想能够做一个不断移动的精灵,目前我的代码只会将精灵移动到我的触摸位置,但如果我保持并移动精灵不会跟随。此外,我不想“触摸”SKSpriteNode来激活移动,我想要触摸屏幕上的任何位置并从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 

    } 

感谢您的任何帮助表示赞赏。

回答

0

我通过使用func 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 

}