我如何围绕一个圆圈每10度生成精灵?

时间:2016-01-03 22:42:55

标签: swift sprite-kit 2d-games

我对编码非常陌生,并希望通过我正在学习的小游戏获得一些帮助。所以我有一个圆圈,我试图围绕圆圈每隔10度创建一个对象。我试过这个:

override func didMoveToView(view: SKView) {

     self.spawnArrows()

}

func spawnArrows() {

     for var i = 0; i < 36; i++ {

         let arrow = self.createArrow(specificPointOnCircle(Float(self.frame.size.width), center: CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame)), angle: Float(i * 10)))
         self.addChild(arrow)

     }
}

func specificPointOnCircle(radius:Float, center:CGPoint, angle:Float) -> CGPoint {

    let theta = angle * Float(M_PI) + 2.0
    let x = radius * cosf(theta)
    let y = radius * sinf(theta)
    return CGPoint(x: CGFloat(x) + center.x, y: CGFloat(y) + center.y)

}

func createArrow(position: CGPoint) -> SKSpriteNode {

    let arrow = SKSpriteNode(imageNamed: "Arrow.png")
    arrow.zPosition = 2
    arrow.size = CGSize(width: self.frame.size.width * 0.12, height: self.frame.size.width * 0.025)
    arrow.position = position
    return arrow

}

但是什么都没有出现。我的数学错在某处,或者我的语法,或者两者兼而有之?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

问题1:

将度数转换为弧度的公式是错误的,公式为:

let theta = angle * Float(M_PI) / 180

问题2:

您的半径是场景的整个大小,因此您要绘制从场景中心到场景长度的点,这超出场景宽度的2倍。至少,将半径设置为宽度/ 2,以便在宽度的最边缘看到它