Why is my SKSpriteNode not traveling in a straight line as the code intends?

0

I have code of a subclass of SKScene, which show cars driving from the right to the left. For some reason, the cars drive at an angle instead of straight. Below is the code for my subclass, excluding the parts that do not have anything to do with the problem. Why are the cars not driving in a straight line?

override func didMove(to view: SKView) {

    run(SKAction.repeatForever(
        SKAction.sequence([
            SKAction.run(addCompetitor),
            SKAction.wait(forDuration: 3.0)
            ])
    ))

}

func random() -> CGFloat {
    return CGFloat(Float(arc4random()) / /* 0xFFFFFFFF */ 4294967296)
}

func random(min: CGFloat, max: CGFloat) -> CGFloat {
    return random() * (max - min) + min
}

func addCompetitor() {
    // Create sprite
    let car = SKSpriteNode(imageNamed: "utili")

    car.physicsBody = SKPhysicsBody(rectangleOf: car.size) // 1

    // Determine where to spawn the car along the Y axis
    let actualY = random(min: car.size.height/2, max: size.height - car.size.height/2)

    // Position the car slightly off-screen along the right edge,
    // and along a random position along the Y axis as calculated above
    car.position = CGPoint(x: size.width + car.size.width/2, y: actualY)

    // Add the car to the scene
    addChild(car)

    // Determine speed of the car
    let actualDuration = random(min: CGFloat(2.0), max: CGFloat(4.0))

    // Create the actions
    let actionMove = SKAction.move(to: CGPoint(x: -car.size.width/2, y: actualY), duration: TimeInterval(actualDuration))
    let actionMoveDone = SKAction.removeFromParent()
    car.run(SKAction.sequence([actionMove, actionMoveDone]))
}
ios
swift
sprite-kit
skspritenode
asked on Stack Overflow May 8, 2019 by Daniel Brower

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0