Search code examples
swiftsprite-kitskshapenode

Draw a hole in a rectangle with SpriteKit?


How to draw a hole in a rectangle? I want to draw a rectangle which has a empty hole inside it and the background can be show.

I am using SKShapeNode to create a rectangle, but I have no idea how to make a hole (circle) inside it.


This is what I run your code, but my circle is not empty, the circle is black, I want it to be empty. Is there any mistake I didn't mention? enter image description here


Solution

  • Here's the code.

    import SpriteKit
    
    class GameScene: SKScene {
    
        override func didMove(to view: SKView) {
    
            let effect = SKEffectNode()
            addChild(effect)
    
            let rect = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 400, height: 200))
            rect.fillColor = .green
            effect.addChild(rect)
    
    
            let hole = SKShapeNode(circleOfRadius: 40)
            hole.position = CGPoint(x: 200, y: 100)
            hole.fillColor = .white
            hole.blendMode = .subtract
            rect.addChild(hole)
    
        }
    }
    

    enter image description here

    As you can see I create an SKEffectNode. Then I add to it the rectangle. Finally I add the hole to the rectangle.