Swift version: 5.6
Although you can create an SKSpriteNode
from a color and size, most folks create them from textures – image data stored in an asset catalog or texture atlas. SpriteKit’s textures are handled using their own class called SKTexture
, and you can load them individually then use them to change the texture used to draw a sprite.
At its most basic, you can change a sprite’s texture like this:
let texture1 = SKTexture(imageNamed: "newTexture")
someSprite.texture = texture1
However, that only works if your sprite and the texture are the same size – if they don’t, the texture will get squashed to fit the available space.
If the sprite and texture are different sizes then a better thing to do is use the setTexture()
action, passing in true for its resize
parameter like this:
let texture2 = SKTexture(imageNamed: "newTexture")
let action = SKAction.setTexture(texture2, resize: true)
someSprite.run(action)
That will switch the texture over, then grow the sprite to fit the new texture size.
SPONSORED From March 20th to 26th, you can join a FREE crash course for mid/senior iOS devs who want to achieve an expert level of technical and practical skills – it’s the fast track to being a complete senior developer!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 7.1
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.