da1lbi3
da1lbi3

Reputation: 4519

Move skspriteNode on swipe actions

What I want to do is making a SkspiteNode move from left to right and back. This happens on touch.

I have this code:

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
        for touch in touches{
            touchLocation = touch.locationInNode(self)
            mainGuy.position.x = touchLocation.x;
        }
    }

This works. But when I have/move my finger at the right side of the screen and the mainGuy is at the left side of the screen it moves to my finger. This is not what I want to happen.

When I move my finger over the screen it needs to 'follow' my finger from the current position of the mainGuy.

How can I do this?

Upvotes: 1

Views: 232

Answers (1)

tbondwilkinson
tbondwilkinson

Reputation: 1087

Do something like:

var touchesBeganPosition: CGPoint?

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
  touchesBeganPosition = touches.first?.locationInNode(self)
}

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
  for touch in touches {
    touchLocation = touch.locationInNode(self)
    if let touchesBeganPosition = touchesBeganPosition {
      mainGuy.position.x = touchLocation.x - touchesBeganPosition.x
    }
  }
}

This is untested of of course, but should be enough to get the general idea.

Upvotes: 1

Related Questions