【问题标题】:SKSpriteNode drag movement by touchSKSpriteNode 通过触摸拖动移动
【发布时间】:2014-10-05 22:04:57
【问题描述】:

我正在尝试通过触摸屏幕在屏幕上拖动一个 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

    }

感谢您的任何帮助。

【问题讨论】:

    标签: xcode swift ios8 sprite-kit


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多