0
votes

An app I'm building drops the FPS when sprite nodes are created, I have searched posts far and wide and cannot figure out why, if anyone had any ideas I would appreciate it!

The issues occur on the simulator and device.

the code for the creating of the nodes is below.

Thank you.

@objc func createEnemy(){

        let randomDistribution = GKRandomDistribution(lowestValue: -350, highestValue: 350)
        let sprite = SKSpriteNode(imageNamed: "Virus")

        sprite.position = CGPoint(x: 700, y: randomDistribution.nextInt())
        sprite.name = "Virus"
        sprite.zPosition = 1
        sprite.size = CGSize(width: 70, height: 70)
        addChild(sprite)

        sprite.physicsBody = SKPhysicsBody(texture: sprite.texture!, size: sprite.size)
        sprite.physicsBody?.velocity = CGVector(dx: -500, dy: 0)
        sprite.physicsBody?.linearDamping = 0

        sprite.physicsBody?.contactTestBitMask = 1
        sprite.physicsBody?.categoryBitMask = 0
        sprite.physicsBody?.affectedByGravity = false

        createBonus()
    }

    func createBonus(){

        let randomDistribution = GKRandomDistribution(lowestValue: -350, highestValue: 350)
        let sprite = SKSpriteNode(imageNamed: "Vaccine")

        sprite.position = CGPoint(x: 700, y: randomDistribution.nextInt())
        sprite.name = "Vaccine"
        sprite.size = CGSize(width: 70, height: 70)
        sprite.zPosition = 1
        addChild(sprite)

        sprite.physicsBody = SKPhysicsBody(texture: sprite.texture!, size: sprite.size)
        sprite.physicsBody?.velocity = CGVector(dx: -500, dy: 0)
        sprite.physicsBody?.linearDamping = 0

        sprite.physicsBody?.contactTestBitMask = 1
        sprite.physicsBody?.categoryBitMask = 0
        sprite.physicsBody?.collisionBitMask = 0
        sprite.physicsBody?.affectedByGravity = false
    }
1

1 Answers

0
votes

Did you try to preload the textures?

 let image = SKTexture(imageNamed: "nodeImage")


override func didMove(to view: SKView) {

   image.preload{

     print("image has been preloaded")

    }
}