2016-03-18 6 views
0

Ich erstelle gerade ein Spiel in SpriteKit. In diesem Spiel versuche ich, einen Umriss eines Kreises mit einer kleinen Lücke (s) im Umriss dieses Kreises (möglicherweise etwa 1/8 des gesamten Umfangs des Kreises) zu zeichnen. Hier ist ein gezeichnetes Bild dessen, was ich visualisiere.Zeichnung Kreis Umriss mit kleiner Lücke Sprite Kit Swift

enter image description here

Wie würde ich tun dies mit SpriteKit? Würde ich SKShapeNode verwenden? Jede Hilfe wäre willkommen. Vielen Dank.

Antwort

2

Sie können etwas ähnliches mit der SKShapeNode in Kombination mit SKEffectNode, wie diese:

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

Das Ergebnis:

crosshair

Oder Sie programmatisch eine Maske machen könnte und es auf a SKCropNode. Der SKCropNode ist natürlich ein Elternteil eines Rings (SKShapeNode mit fillColor eingestellt auf und strokeColor auf einen geeigneten Wert gesetzt).