swift - 为什么对随机函数的调用在序列中不起作用?

标签 swift sprite-kit

我正在尝试为一个简单的对象生成一个随机的 X 位置,以便让它在 Swift SpriteKit 游戏的场景中来回弹跳。 repeatForever Action 应该生成一个随机值,然后将对象(一个圆圈)多次移动到左右不同的位置。但是,它只作用一次。就好像正确运行的随机函数只被调用一次,然后该 Action 只是继续将对象永远移动到同一位置。

let circle = SKSpriteNode(imageNamed: "circle")
circle.run(SKAction.repeatForever(SKAction.move(to:
        CGPoint(x: random(min: minCircleX, max: maxCircleX),
            y: scene.size.height*0.5),
            duration: 0.5)))

圆圈只移动一次,移动到一个位置,之后似乎再也没有移动过。我怀疑它只是一遍又一遍地移动到相同的位置。感谢您的任何建议!

最佳答案

OK,经过多方努力,实现如下:

let customAction = SKAction.customAction(withDuration: 1000)
{
    circle, _ in
    let newXLocation: CGPoint = CGPoint(x: random(min: minCircleX, max: maxCircleX),
                                        y: scene.size.height*0.5)
    circle.run(SKAction.move(to: newXLocation, duration: 0.5))
}
circle.run(customAction)

戴在建议匿名函数方面是正确的。 SKAction 方法 customAction 允许这样做。然后在函数内运行实际 Action ,确保每次 Action 都是随机的。非常感谢!

关于swift - 为什么对随机函数的调用在序列中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57641747/

相关文章:

sprite-kit - 我似乎真的没有得到等待 SKAction 的范围

ios - 无法使用其文档从 parse.com 快速检索图片

xcode - SKTexture 没有正确改变

swift 2.0 分配了哪个图像

swift - SKSpriteNode 不适用于随机数数组

ios - 设置 SpriteKit 节点的位置(游戏中)

sprite-kit - 如何检测有关 Sprite 纹理的接触

ios - Sprite 套件侧滚动

arrays - 如何在引用 Swift 之前初始化数组

swift - 类不符合协议(protocol),但结构符合