【发布时间】:2016-04-07 13:18:27
【问题描述】:
我对编码很陌生,希望能在我正在学习的一个小游戏上获得一些帮助。所以我有一个圆圈,我试图在圆圈周围每隔 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
}
但是什么都没有出现。我的数学是否有问题,或者我的语法,或者两者兼而有之?任何帮助表示赞赏。
【问题讨论】:
-
你的数学有点晕。在
spawnArrows()中打印您的arrow.location。它似乎根本没有改变。 Angle 是 SpriteNode 的角度。对不起,但我没有时间进一步检查 atm... :( -
度到弧度的公式是
let theta = angle * Float(M_PI) / 180 -
顺便说一句,你的半径太大了,比你的场景大小还大,你需要把它变小
-
将半径设置为
Float(self.frame.size.width)/10并将弧度公式更改为let theta = angle * Float(M_PI) / 180为我解决了这个问题。你应该回答@Knight0fDragon
标签: swift sprite-kit 2d-games