AppleTattooGuy AppleTattooGuy - 11 days ago 6
Swift Question

Using motion in SpriteKit

Swift noob here so please bear with me!

I have been following tutorials to implement motion into my SpriteKit (Swift 3) game. I have the following code:

class GameScene: SKScene {


let player = SKSpriteNode(imageNamed: "Airplane")

override func didMove(to view: SKView) {

backgroundColor = SKColor.white

player.position = CGPoint(x: size.width * 0.1, y: size.height * 0.5)

addChild(player)

if motionManager.isAccelerometerAvailable == true {

motionManager.startAccelerometerUpdates(to: OperationQueue.currentQueue(), withHandler:{

data, error in

var currentX = self.player.position.x

// 3
if data.acceleration.x < 0 {
self.destX = currentX + CGFloat(data.acceleration.x * 100)
}

else if data.acceleration.x > 0 {
self.destX = currentX + CGFloat(data.acceleration.x * 100)
}

})

}

}
}


I am getting errors on the startAccelerometerUpdates line in relation to the operation queue:

'Call value of non-function type OperationQueue'


I have tried a few ways to do this and have been searching around for it, am I missing the obvious?

GOR GOR
Answer

Try

OperationQueue.current

instead of

OperationQueue.currentQueue()

Apple did a bunch of these changes for Swift 3.