我试图制作精灵"彗星"随机出现在随机位置。到目前为止,我想测试我的随机位置代码是否有效,但是,我甚至无法看到精灵。这是我的代码:
func spawnAtRandomPosition() {
let height = self.view!.frame.height
let width = self.view!.frame.width
let randomPosition = CGPointMake(CGFloat(arc4random()) % height, CGFloat(arc4random()) % width)
let sprite = SKSpriteNode(imageNamed: "comet")
sprite.position = randomPosition
self.addChild(sprite)
}
正如我所说,我没有看到任何。有帮助吗?如果你已经知道如何让它在一个随机的时间出现,也会受到赞赏,因为它有自己的问题,但这是我现在关注的焦点。谢谢!
答案 0 :(得分:1)
您设置随机位置的代码不正确。此外,您的代码存在一些问题,使得无法在Swift 3中进行编译。您的完整函数应如下所示:
func spawnAtRandomPosition() {
let height = UInt32(self.size.height)
let width = UInt32(self.size.width)
let randomPosition = CGPoint(x: Int(arc4random_uniform(width)), y: Int(arc4random_uniform(height)))
let sprite = SKSpriteNode(imageNamed: "comet")
sprite.position = randomPosition
self.addChild(sprite)
}
请注意randomPosition
的更改以及高度和宽度:
let randomPosition = CGPoint(x: Int(arc4random_uniform(width)), y: Int(arc4random_uniform(height)))
这确定了0和你的宽度之间的随机值,并对高度做了同样的事情。
关于高度和宽度,请参阅@ Whirlwind对解释视图与场景之间差异的问题的评论。
此外,在测试随机定位之前,您可能需要检查是否正确设置节点(设置大小,尝试使用固定位置等),以确定问题的确切位置。
答案 1 :(得分:0)
我想出了这段代码,它对我有用:
let randomNum = CGPoint(x:Int (arc4random() % 1000), y: 1)
let actionMove = SKAction.moveTo(randomNum, duration: 1)
我只想让x随机化,但如果你需要" y"也可以随机化,你可以将规范复制到x到y。