2016-03-14 14 views
7

Próbuję dokonać przesunięcia elementu o krawędź cercle.Sprite-kit: Przesuwanie elementu po torze kołowym

  • Stworzyłem i umieszczone na Cercle w środku ekranu:
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) 
  • Potem stworzyliśmy kolejną sprite i dodał działanie na nią:
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) 

Pierwszy obrót (patrz zdjęcie poniżej) statku kosmicznego następuje dokładnie wzdłuż krawędzi koła ale druga iteracja zmienia położenie statku kosmicznego i przesuwa go poza granice ekranu. Czy to normalne, czy też robię coś nie tak?

Dzięki.

enter image description here

+0

Cześć, Sahbi. Chcę zadać ci jedno pytanie, w jaki sposób możemy dodać dwa lub więcej statków kosmicznych? To będzie poruszać się po okręgu. Proszę podać link lub dowolny pomysł. – Amanpreet

Odpowiedz

5

+ followPath:duration: dają ten sam efekt jak followPath:asOffset:orientToPath:duration: z obydwoma, asOffset i orientToPath parametrami ustawionymi true.

O parametru asOffset od docs:

Jeśli TAK, punkty w ścieżce są względne przesunięcia do węzła pozycji wyjściowej. Jeśli NIE, punkty w węźle są bezwzględnymi wartościami współrzędnymi .

Tak, należy jawnie ustawić go na false:

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

Myślę, że masz na myśli "false" w swojej odpowiedzi: D – Fogmeister

+0

@Fogmeister Right :) Dzięki za wskazanie tego. – Whirlwind

Powiązane problemy