swift - 用小间隙绘制圆形轮廓 Sprite Kit Swift

标签 swift sprite-kit uibezierpath skshapenode

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

enter image description here

我如何使用 SpriteKit 做到这一点?我会使用 SKShapeNode 吗?任何帮助,将不胜感激。谢谢。

最佳答案

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

或者您可以通过编程方式制作 mask 并将其应用于 SKCropNode。 SKCropNode 当然是环的父级(SKShapeNodefillColor 设置为 .clearColor()strokeColor 设置为适当的值)。

关于swift - 用小间隙绘制圆形轮廓 Sprite Kit Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36093192/

相关文章:

swift - 从 UIViewController 类隐藏自定义 View UIButton

swift - 将数据发送到 3D Touch 快捷方式

ios - UICollectionViewCell 中圆形 UIImageView 的错误

ios - SpriteKit,Swift - ScrollView 未显示

ios - 使用 Swift 以编程方式在 Spritekit 中 ScrollView (无 Storyboard)

ios - 将 UIBezierPath 转换为字符串

ios - Swift - 使用 UIBezierPath 裁剪图像

swift - 如何将完成 block 添加到 SwiftUI .alert(isPresented)

ios - 如何解决泄漏?

ios - 为什么 'Pie Slice' 中的斜线无法使用 UIBezierPath 正确绘制?