我怎样才能围绕一个圆每 10 度生成一个精灵?
How can I spawn sprites every 10 degrees around a circle?
我是编码的新手,希望能对我正在学习的小游戏提供一些帮助。所以我有一个圆圈,我试图在圆圈周围每隔 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 以在宽度的最边缘看到它
我是编码的新手,希望能对我正在学习的小游戏提供一些帮助。所以我有一个圆圈,我试图在圆圈周围每隔 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 以在宽度的最边缘看到它