Рисование контура круга с небольшим зазором Sprite Kit Swift

В настоящее время я создаю игру в SpriteKit. В этой игре я пытаюсь нарисовать контур круга с небольшими промежутками в контуре этого круга (возможно, около 1/8 всей окружности круга). Вот нарисованная картина того, что я визуализирую.

введите здесь описание изображения

Как мне это сделать с помощью SpriteKit? Буду ли я использовать SKShapeNode? Любая помощь будет оценена по достоинству. Спасибо.


person Aidan Kaiser    schedule 18.03.2016    source источник


Ответы (1)


Вы можете получить что-то подобное, используя SKShapeNode в сочетании с SKEffectNode, например:

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)
}

Результат:

перекрестие

Или вы можете создать маску программно и применить ее к SKCropNode. SKCropNode, конечно, будет родителем кольца (SKShapeNode с fillColor установленным на .clearColor() и strokeColor установленным на соответствующее значение).

person Whirlwind    schedule 19.03.2016