使精灵出现在随机位置

时间:2016-10-29 10:31:36

标签: swift xcode sprite-kit

我试图制作精灵"彗星"随机出现在随机位置。到目前为止,我想测试我的随机位置代码是否有效,但是,我甚至无法看到精灵。这是我的代码:

 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)
    }

正如我所说,我没有看到任何。有帮助吗?如果你已经知道如何让它在一个随机的时间出现,也会受到赞赏,因为它有自己的问题,但这是我现在关注的焦点。谢谢!

2 个答案:

答案 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。