小间隙画圆轮廓 Sprite Kit Swift
Drawing circle outline with small gap Sprite Kit Swift
我目前正在使用 SpriteKit 创建游戏。在这个游戏中,我试图绘制一个圆的轮廓,在这个圆的轮廓中有一个小间隙(可能大约是整个圆周的 1/8)。这是我正在可视化的绘制图片。
我如何使用 SpriteKit 执行此操作?我会使用 SKShapeNode 吗?任何帮助,将不胜感激。谢谢。
您可以将 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
设置为适当的值)。
我目前正在使用 SpriteKit 创建游戏。在这个游戏中,我试图绘制一个圆的轮廓,在这个圆的轮廓中有一个小间隙(可能大约是整个圆周的 1/8)。这是我正在可视化的绘制图片。
我如何使用 SpriteKit 执行此操作?我会使用 SKShapeNode 吗?任何帮助,将不胜感激。谢谢。
您可以将 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
设置为适当的值)。