SKEffectNode, SpriteKit invert color in Swift

578 Views Asked by At

I want to invert the color from the part of the HelloLable which is outside of the boxSprite. I know that it is possible with SKEffectNode but I don't know how.

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        let box = SKSpriteNode()
        box.position = CGPoint(x: size.width/2-100, y: size.height/2)
        box.color = UIColor.blackColor()
        box.size = CGSize(width: 200, height: 200)
        addChild(box)
        
        let HelloLable = SKLabelNode()
        HelloLable.text = "Hello"
        HelloLable.position = CGPoint(x: size.width/2, y: size.height/2)
        HelloLable.fontColor = UIColor.whiteColor()
        HelloLable.fontSize = 50
        addChild(HelloLable)
    }
1

There are 1 best solutions below

0
On

If I understand you correctly, you'd like to make something like this: Example 1

I don't think there is a standard solution to do this (maybe you could try blending modes or shaders). Maybe the easiest solution could be to make 2 labels, one white in the box, and one black under the box, with similar properties, and clip the white one with the box.