Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SpriteKit missing linear transformation matrices

Does anyone know how to transform (rotate,scale,skew) SpriteKit nodes using transformation matrices. couldn't find any support for this in the Spritekit API.

like image 526
Dubon Ya'ar Avatar asked Oct 27 '25 13:10

Dubon Ya'ar


1 Answers

As mentioned by Fogmeister, you can use an SKEffectNode with a CIFilter. The following works on iOS:

// Label
let label = SKLabelNode(text: "Hello world")
// Transform
let transform = CGAffineTransformMake(1, 0.5, 0, 1, 0, 0)
// CIFilter
let transformFilter = CIFilter(name: "CIAffineTransform")!
let val = NSValue(CGAffineTransform: transform)
transformFilter.setValue(val, forKey: "inputTransform")
// Effect node
let transformNode = SKEffectNode()
transformNode.filter = transformFilter
// Add label as child on effect node
transformNode.addChild(label)
scene.addChild(transformNode)

See more on affine transform in Apple's documentation.

like image 134
tobiasdm Avatar answered Oct 30 '25 14:10

tobiasdm



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!