I am creating my first game with a set of sprites and recently read an article that says SKTextureAtlas is used to improve performance.
So, I transferred all my sprites to organized .atlas folders and updated the code accordingly. However, now my sprites have weird physical bodies (mostly overly extended).
For example, my game sprite has three states: Flying (flat), Flying Up, and Flying Down. The three images are pretty similar, with slight variations (hands pointing to the plane, up, down).
Before switching to texture atlases, the physical body was beautiful with the image. However, now it is much larger than the image and stretches slightly along the y axis.
Here is my player.atlas file structure:
player-flying-iphone.atlas:
- player-flying-down@2x.png
- player-flying-down@3x.png
- player-flying-up@2x.png
- player-flying-up@3x.png
- player-flying@2x.png
- player-flying@3x.png
Here is an example of my code: (Player is a subclass of SKSpriteNode)
let textureAtlas = SKTextureAtlas(named: "player-iphone") let playerFlyingTexture = textureAtlas.textureNamed("player-flying") let player = Player(texture: playerFlyingTexture, color: UIColor.clearColor(), size: CGSizeMake(100.0, 100.0)) let physicsBody = SKPhysicsBody(texture: playerFlyingTexture, size: CGSizeMake(100.0, 100.0)) physicsBody.dynamic = true physicsBody.affectedByGravity = true physicsBody.usesPreciseCollisionDetection = false physicsBody.categoryBitMask = CollisionCategories.Player physicsBody.contactTestBitMask = CollisionCategories.Enemy physicsBody.collisionBitMask = CollisionCategories.EdgeBody physicsBody.allowsRotation = false player.physicsBody = physicsBody
source share