绘制圆形轮廓与小间隙精灵套件斯威夫特

时间:2016-03-18 19:58:11

标签: swift sprite-kit uibezierpath skshapenode

我目前正在SpriteKit中创建游戏。在这个游戏中,我试图绘制一个圆圈的轮廓,在这个圆的轮廓中有一个小间隙(可能是圆的整个圆周的1/8)。这是我想象的图片。

enter image description here

我如何使用SpriteKit执行此操作?我会使用SKShapeNode吗?任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用SKShapeNodeSKEffectNode相结合来获得类似的内容,如下所示:

override func didMoveToView(view: SKView) {

        let effectNode = SKEffectNode()
        let gap = CGFloat(M_PI_4 / 4.0)

        for i in 0...3 {

            let shape = SKShapeNode(circleOfRadius: 50)

            shape.fillColor = .clearColor()
            shape.lineWidth = 6.8
            shape.strokeColor = .darkGrayColor()

            let startAngle:CGFloat = CGFloat(i) * CGFloat(M_PI_2) + gap
            let endAngle:CGFloat = startAngle + CGFloat(M_PI_2) - gap * 2

            print("Iteration \(i) : start angle (\(startAngle * 180 / CGFloat(M_PI)), end angle (\(endAngle  * 180 / CGFloat(M_PI)))")

            shape.path = UIBezierPath(arcCenter: CGPointZero, radius: -50, startAngle: startAngle, endAngle: endAngle, clockwise: true).CGPath

            effectNode.addChild(shape)
        }

        effectNode.position = CGPoint(x: frame.midX, y: frame.midY)
        effectNode.shouldRasterize = true

        addChild(effectNode)
}

结果:

crosshair

或者您可以以编程方式制作遮罩并将其应用于SKCropNode。 SKCropNode当然是一个响铃的父级(SKShapeNodefillColor设置为.clearColor()strokeColor设置为适当的值。)