SpriteKit - 创建随机对象并使用deltatime移动它们

Abd*_*023 6 random timedelta sprite-kit skaction swift

在我的游戏中,我想每隔几秒调用一个函数,从数组中创建随机对象.目前我正在通过SKAction移动这个对象,如下所示:

func createRandmoObject() {
    let random = arc4random_uniform(4)
    randomObject = randomObjects[random]

    randomObject.runAction(SKAction.moveTo(CGPoint(x: randomObject.position.x, y: 0 - randomObject.size.height), duration: 3))

    addChild(randomObject)

}
Run Code Online (Sandbox Code Playgroud)

当对象击中播放器时,它会被删除,然后再次调用该函数.这种方法的问题是我发现物体的运动并不总是平滑的,当帧速率因某种原因而下降时,会发生口吃.现在我知道如何在更新方法中计算增量时间,但我不确定当对象不断变化而不是总是在屏幕上时如何将它应用于对象,并且还有一些其他对象(让我们想到他们是敌人,还有另一个创造另一个敌人的功能)那么我怎样才能使这些随机物体按照delta时间而不是SKAction移动?

Gen*_*ode 0

虽然您可以在 spritekit 项目中使用 SKAction,但如果您的游戏基于物理,则应该对所有 sprite 运动使用更新方法。SKactions 对于简单的游戏来说是可以的,但如果你的游戏涉及碰撞和随机移动,更新方法是不错的选择。