swift - 在随机位置生成 SKSprite

标签 swift sprite-kit skspritenode

我正在制作一个游戏,我需要“皱眉”在屏幕上的随机位置生成然后掉落。

我让它生成,但它只在一个部分中生成,并且不会在其他任何地方生成:

}

func random() -> CGFloat {
    return CGFloat(Float(arc4random()) / 0xFFFFFFFFFFFFF)
}

func random(#min: CGFloat, max: CGFloat) -> CGFloat {
    return random() * (max - min) + min
}

func addFrowny() {

    let frowny = SKSpriteNode(imageNamed: "Frowny")

    let actualX = random(min: frowny.size.width/2, max: size.width + frowny.size.height/2)

    frowny.position = CGPoint(x: actualX, y: size.width - frowny.size.height/2)

    addChild(frowny)


    let actualDuration = random(min: CGFloat(2.0), max: CGFloat(4.0))


    let actionMove = SKAction.moveTo(CGPoint(x: actualX, y: +frowny.size.height/2), duration: NSTimeInterval(actualDuration))
    let actionMoveDone = SKAction.removeFromParent()
    frowny.runAction(SKAction.sequence([actionMove, actionMoveDone]))

最佳答案

您的random方法每次都不会返回0到1之间的值,而是返回类似0.00000001的值。请改用此随机函数:

func random() -> CGFloat {
    return CGFloat(Double(arc4random()) / Double(UInt32.max))
}

(除数太多,当它令人困惑时不应该使用十六进制)

关于swift - 在随机位置生成 SKSprite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32158476/

相关文章:

ios - swift 5 : The given data was not valid JSON (Loading Data from API to Table View)

ios - 在两个对象完成操作后,如何确定指示器显示哪个部分?

swift - SKAction 的行为似乎不像我预期的那样

ios - 通过 SpriteKit 中的节点进行触摸

Swift 检测碰撞和设置枚举

swift - 使用任何 RGB 颜色空间时无法获得有效的 CGContext?

ios - Swift 3 - 将导航项添加到 UINavigationController 子类

swift - 编码 SpriteKit 游戏,我收到 "Instance member ' minX' 不能在类型 'CGRect"上使用

ios - 如何在 Swift 3 中将 SKSpriteNode 合并到 SKTexture 中以形成新的 SKSpriteNode?

swift - 多次检测到碰撞