在随机位置生成 SKSprite

Posted

技术标签:

【中文标题】在随机位置生成 SKSprite【英文标题】:Spawn SKSprite at random positions 【发布时间】:2015-08-22 16:44:20 【问题描述】:

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

我让它产卵,但它只在一个部分,它不会在其他任何地方产卵:



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

【问题讨论】:

【参考方案1】:

您的 random 方法每次都不会返回介于 0 和 1 之间的值,而是返回 0.00000001 之类的值。改用这个随机函数:

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

(你除数太多了,乱码的时候不要用十六进制)

【讨论】:

以上是关于在随机位置生成 SKSprite的主要内容,如果未能解决你的问题,请参考以下文章

我想在给定区域的随机位置生成敌人。我不想让我的敌人随机出现在障碍物顶部等任何地方

AS3:生成多个影片剪辑(随机位置)?

Python 随机产生[0,100]以内的随机数,找到最大值和最小值并交换位置

JS_生成随机矩形位置/矩形大小_面向对象_原型+构造函数模式

Unity C# - 在一个点周围随机生成游戏对象

为 3D 空间中的点生成随机运动