2017-07-10 26 views
1

(Click here for the sprite image)スプライトを円形のパスに沿って回転させる方法は?

これは4つのスプライトで構成されたホイールです。私の目的は、それらをホイールとして回転させることです。私は 'UIBezier' arccenterクラスを試しましたが、最終結果は個々のスプライトが中心に沿って動いていますが、その形状も回転して、望ましくない結果につながります。ここにrelavantコードがあります。 'orientToPath'をtrueに設定すると、スプライト自体が回転します。

//path rotation 
let dx = whlPurple.position.x - self.size.width/2 
let dy = whlPurple.position.y - (whlRed.size.height/2 + (whlPurple.position.y - whlRed.size.height)) 
let rad = atan2(dy, dx) 
let radius = sqrt((dx*dx) + (dy*dy)) 
let path = UIBezierPath(arcCenter: CGPoint(x: self.size.width/2, y: (whlRed.size.height/2 + (whlPurple.position.y - whlRed.size.height))), radius: radius, startAngle: rad, endAngle: rad + CGFloat(M_PI * 6), clockwise: true) 

let follow = SKAction.follow(path.cgPath, asOffset: false, orientToPath: true, speed: 200) 

whlPurple.run(SKAction.repeatForever(follow)) 

答えて

0

SKNodeを作成してサークルの中央に配置します。

次にCGPoint(x:radius、y:0)の位置にスプライトを追加します(addChild)。あなたは円のあなたの開始位置を選ぶようにSKNodeのzRotationを設定することができます。

SKNodeを回転すると、スプライトは完全な円で移動します。たとえば、敵を5秒後に移動させるには、SKAction.rotate(2 * pi、duration:5)を使用し、それを永遠に繰り返すことができます(スプライトを含むSKNodeでスプライト自体ではありません)。

関連する問題