swift - 我怎样才能围绕一个圆每 10 度生成一个 Sprite ?

标签 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:

你的度数转弧度的公式是错误的,公式是:

let theta = angle * Float(M_PI) / 180

问题 2:

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

关于swift - 我怎样才能围绕一个圆每 10 度生成一个 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34582490/

相关文章:

swift - swift 中的并行编程是否消除了值类型优化?

swift - 向 UITextField 添加顶部填充

ios - 如何防止 SKAction 序列在解码后重新启动?

scala - 什么是与 Scala 一起使用的最简单的 2D 游戏库?

java - 控制 2d 游戏的动画速度

ios - 访问 Metal 文件中的快速结构或类

swift - 隐式导入特定的 Swift 模块

ios - 暂停按钮在更改时添加新节点

sprite-kit - GKEntity/组件更新周期最佳实践

javascript - 碰撞检测难度,玩家飞