Spritekit更新功能中的时间减慢了

时间:2017-03-07 19:47:14

标签: ios swift sprite-kit

我在Spritekit中制作游戏,并且有一个计时器停止运行,不断更新更新功能。有时在我的游戏中,我会改变物理世界的速度,当发生这种情况时,我希望计时器能够改变速度。 更具体地说,我将速度更改为0.5。 所以我想,在那段时间内,它的速度只有它的一半。 这是我减少时间的代码。在didMove函数中调用lastSwitch。

 var lastSwitch = CFAbsoluteTimeGetCurrent()
 override func update(_ currentTime: TimeInterval) {
    let currentTime = CFAbsoluteTimeGetCurrent()

    let timePassed = currentTime - lastSwitch

    let timeLeft = totalTime - timePassed
    //... bla bla
    time.text = "\(timeLeft)"
 }

1 个答案:

答案 0 :(得分:1)

节点(场景是一个节点)有自己的速度属性,所以只需设置(self.speed = 0.5半速)。顺便说一句,我不确定你在做什么,但我建议你不要按照你的方式进行计时,因为场景时间与现实世界时间不同。

相反,请使用自定义操作:

func startTimer()
{
    let duration = 1
    let totalGameTime = SKAction.customAction(withDuration:duration)
                        {
                            [unowned self] (node,elapsedTime) in
                            let timeLeft = duration - elapsedTime
                            self.time.text = "\(timeLeft)"
                        }
    self.run(totalGameTime,withKey:"totalGameTime")
}

这样,当您使用speed属性时,计时器会随之减慢。

因此,假设您将游戏速度设置为0.5。完成所提供的操作需要2秒钟,因为你持续时间/场景速度,所以1 / 0.5即2。