2016-03-18 12 views
0

現在、SpriteKitでゲームを作成しています。このゲームでは、この円の輪郭に小さな隙間(おそらく円の全周の約1/8)を持つ円の輪郭を描こうとしています。ここに私が描いているものの描かれた絵があります。小さな隙間を描く円の輪郭スプライトキットスウィフト

enter image description here

は、どのように私はこの使用してSpriteKitベースをしますか? SKShapeNodeを使用しますか?どんな助けもありがとう。ありがとうございました。

答えて

2

あなたはこのように、SKEffectNodeと組み合わせてSKShapeNodeを使用して同様の何かを得ることができます。

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

それとも、プログラム的にマスクを作成し、それを適用することができa SKCropNode。もちろん、SKCropNodeはリングの親になります(SKShapeNode.clearColor()に設定され、適切な値に設定されたfillColor)。

関連する問題