user7081906
user7081906

Reputation:

My Sprite won't perform the actions I tell it to?

I am making an app in Xcode 7 using Swift and SpriteKit. My idea is to have a spaceship that moves with the finger, or basically just follows it, yet I'm having trouble. This is the code:

import Foundation
import SpriteKit

class secondScene: SKScene {

override func didMoveToView(view: SKView) {

   // var timer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: Selector(spawnBullets()), userInfo: nil, repeats: true)

    //buttons
    let leftbutton = SKSpriteNode(imageNamed: "LeftArrow")
    leftbutton.position = CGPoint(x: self.frame.size.width*0.2, y: self.frame.size.height*0.1)
    leftbutton.size = CGSize(width: 220, height: 80)
    leftbutton.color = SKColor.blueColor()
    leftbutton.zPosition = 100
    self.addChild(leftbutton)

    let rightbutton = SKSpriteNode(imageNamed: "RightArrow")
    rightbutton.position = CGPoint(x: self.frame.size.width*0.8, y: self.frame.size.height*0.1)
    rightbutton.size = CGSize(width: 220, height: 80)
    rightbutton.color = SKColor.blueColor()
    rightbutton.zPosition = 100
    self.addChild(rightbutton)

    //spaceship
    let spaceship = SKSpriteNode(imageNamed: "spaceship")
    spaceship.zPosition = 100
    spaceship.size = CGSize(width: 200, height: 120)
    spaceship.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height*0.15)
    self.addChild(spaceship)           
}

let spaceship = SKSpriteNode(imageNamed: "spaceship")

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    for touch: AnyObject in touches {
        let location = touch.locationInNode(self)
        spaceship.position.x = location.x
    }
}
}

I run this and to me it seems like my spaceship should follow my finger, yet it doesn't. It just stays in the position I specifies before. I've got no errors and I'm out of ideas. Any thoughts?

Upvotes: 0

Views: 29

Answers (1)

crashoverride777
crashoverride777

Reputation: 10674

Remove this line in your spaceship code in didMoveToView

let spaceship = SKSpriteNode(imageNamed: "spaceship")

so that you are actually using the global property you created above touchesBegan.

You probably also want to include/move your code in touchesMoved.

 override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {

     for touch in touches {
         let location = touch.locationInNode(self)

          spaceship.position.x = location.x
     }  
 }

Hope this helps

Upvotes: 1

Related Questions