Swift version: 5.0
Pixel-perfect physics is just one line of code in SpriteKit. Don't believe me? Here you go:
player = SKSpriteNode(imageNamed: "player") player.position = CGPoint(x: 100, y: 384) player.physicsBody = SKPhysicsBody(texture: player.texture!, size: player.size)
That last line is the one that does the magic: SpriteKit will use the alpha values of your sprite (i.e., the transparent pixels) to figure out which parts should be part of a collision.
As you might imagine, pixel-perfect collision detection is significantly slower than using rectangles or circles, so you should use it carefully.
SPONSOR Tired of wasting time debugging your Swift app? Instabug’s SDK is here to help you minimize your debugging time by providing you with complete device details, network logs, and reproduction steps with every bug report. All data is attached automatically. It only takes a line of code to setup. Get started for free.
Available from iOS 7.0 – see Hacking with Swift tutorial 23
Did this solution work for you? Please pass it on!
Other people are reading…
About the Swift Knowledge Base
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.