【问题标题】:Time run down slower in Spritekit update functionSpritekit 更新功能的时间变慢
【发布时间】:2017-07-28 04:13:25
【问题描述】:

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

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

    let timePassed = currentTime - lastSwitch

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

【问题讨论】:

  • 投反对票时,请让佩德罗知道你投反对票的原因,以便佩德罗正确解决他的问题。

标签: ios swift sprite-kit


【解决方案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。

【讨论】:

  • 感谢您的回答!所以有了那个函数,我基本上是在 didMove 函数中调用它?
  • 当你想启动计时器时
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多