2017-11-28 9 views
1

私は、外側から発射するサークル内のプレーヤーから8つの弾丸を作成する機能を持っています。私はこの問題は、ここで、このラインであると思う:SpriteNodesを円形のパターンで外側に移動

let endPoint = CGPoint(x: distance * cos(angle), y: distance * sin(angle)) 

実際には、彼らがすべてで同じ距離を移動しなければならないとき、これは、弾丸が右上にあるものよりも、円の左下に速く移動させ、同じ速度。

これを実装する方法を知っている人はいますか?

func fireSpecialWeapon() { 

    stride(from: 0, to: 2 * CGFloat.pi, by: 2 * CGFloat.pi/8).forEach { angle in 
     let bullet = SKSpriteNode(imageNamed: "bulletCircle") 
     bullet.setScale(3) 
     bullet.zRotation = angle 
     bullet.position = player.position 
     bullet.zPosition = 2 

     //move outwards to the edge of the screen 
     let distance: CGFloat = 1000 
     let endPoint = CGPoint(x: distance * cos(angle), y: distance * sin(angle)) 
     let move = SKAction.move(to: endPoint, duration: 2) 

     self.addChild(bullet) 
     bullet.run(move) 
    } 
} 
+0

これは1に別の質問です私はコメントしましたか? –

+0

SKAction moveを使用すると、飛行機が直線になります。弾丸が速く動いていない場合は、指定した距離(1000ポイント)を2秒で移動します。 – Knight0fDragon

+0

弾丸が左下から右上へ、 、あなたのアンカーポイントが(0,0)でないことを意味します(0.5,0.5) – Knight0fDragon

答えて

2

弾丸が下から速く動いている場合は、あなたのアンカーポイントを意味右上に、残っている(0,0)ではない(0.5,0.5)

関連する問題