我试图制作一个以随机角度发射射弹的游戏。 为此,我需要能够生成两个随机的Int。我查了一些教程并想出了这个:
var random = CGFloat(Int(arc4random()) % 1500)
var random2 = CGFloat(Int(arc4random()) % -300)
self.addChild(bullet)
bullet.physicsBody!.velocity = CGVectorMake((random2), (random))
它工作了一段时间但现在只是崩溃了。
任何帮助都将不胜感激。
答案 0 :(得分:3)
我发现我使用最多的是arc4random_uniform(upperBound)
,它返回从0到upperBound -1的随机Int。
let random = arc4random_uniform(1500)
let random2 = arc4random_uniform(300) * -1
//pick a number between 1 and 10
let pick = arc4random_uniform(10)+1
arc4函数的下限:arc4random man page
GameplayKit有一个包含arc4函数的好类:GameplayKit Randomness
和一个方便的参考:Random Hipster
答案 1 :(得分:1)
我不太了解你的问题,但我认为它可能有用:
func getRandomPointFromCircle(radius:Float, center:CGPoint) -> CGPoint {
let randomAngle = Float(arc4random())/Float(UInt32.max-1) * Float(M_PI) * 2.0
// polar => cartesian
let x = radius * cosf(theta)
let y = radius * sinf(theta)
return CGPointMake(CGFloat(x)+center.x,CGFloat(y)+center.y)
}