positionspritespritebuilder

Spritebuilder sprite position changes


I have my game in spritebuilder, and I am trying to move a ball up every 0.005 seconds. I have an NSTimer doing that, but sometimes ball.position.y + 2 is different.

For instance, one time I play the game, the ball moves to the top of the screen at the speed I want it to. Then, without even closing the game, just opening the scene again, the ball moves at half of the speed, as if + 2 isn't as much at that time, or the NSTimer decides to run at half speed.

NOTE: This only happens on an actual device. I can't get it to happen in a simulator.

Does anyone know why this is happening?

Thanks.

EDIT: My code (abridged):

timer2 = NSTimer.scheduledTimerWithTimeInterval(0.005, target: self, selector: "updateTick", userInfo: nil, repeats: true)

My update function:

func updateTick() {
    ...
    incrementBalls()
    ...
}

My incrementBalls() function:

for index in 0...balls.count - 1 {
    balls[index].position = ccpAdd(_physicsBody.position, CGPoint(x: balls[index].position.x, y: balls[index].position.y + 2))
}

Solution

  • I fixed this by instead using the update method and doing some math to move the balls instead of the unreliable NSTimer.