2016-03-14 17 views
7

Sto provando a far muovere un elemento dal bordo del cercle.Sprite-kit: spostamento di un elemento nel percorso circolare

  • ho creato e posizionato un cercle al centro dello schermo:
var base = SKShapeNode(circleOfRadius: 200) // Size of Circle 
base.position = CGPointMake(frame.midX, frame.midY) 
base.strokeColor = SKColor.blackColor() 
base.glowWidth = 1.0 
base.fillColor = UIColor(hue:1, saturation:0.76, brightness:0.94, alpha:1) 
base.zPosition = 0 
self.addChild(base) 
  • Poi ho creato un altro sprite e ha aggiunto un'azione su di esso:
main = SKSpriteNode(imageNamed:"Spaceship") 
main.xScale = 0.15 
main.yScale = 0.15 
main.zPosition = 1 
let circle = UIBezierPath(roundedRect: CGRectMake((self.frame.width/2) - 200, CGRectGetMidY(self.frame) - 200,400, 400), cornerRadius: 200) 
let circularMove = SKAction.followPath(circle.CGPath, duration: 5.0) 
main.runAction(SKAction.repeatAction(circularMove,count: 2)) 
self.addChild(main) 

La prima rotazione (vedi immagine in basso) dell'astronave segue esattamente i bordi del cerchio ma la seconda iterazione modifica la posizione dell'astronave e la sposta fuori dai limiti dello schermo. È normale o sto facendo qualcosa di sbagliato?

Grazie.

enter image description here

+0

Ciao, Sahbi. Voglio farti una domanda su come aggiungere due o più astronavi? Questo si muoverà lungo il cerchio. Si prega di fare riferimento a un link o qualsiasi idea. – Amanpreet

risposta

5

+ followPath:duration: producono lo stesso effetto followPath:asOffset:orientToPath:duration: con entrambi, e asOffsetorientToPath parametri impostati true.

Chi parametro asOffset dalla documentazione:

Se SI, i punti del percorso sono relativi offset a posizione di partenza del nodo. Se NO, i punti nel nodo sono assoluti valori di coordinate .

Quindi, è necessario impostare in modo esplicito su false:

let circularMove = SKAction.followPath(circle.CGPath, asOffset: false, orientToPath: true, duration: 5) 
+0

Penso che tu intenda falso nella tua risposta: D – Fogmeister

+0

@Fogmeister Giusto :) Grazie per averlo indicato. – Whirlwind

Problemi correlati