ios - Spritekit 更新功能中的时间耗尽速度较慢

标签 ios swift sprite-kit

我正在 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)"
 }

最佳答案

节点(场景是一个节点)有自己的速度属性,所以只需设置它(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。完成所提供的 Action 需要 2 秒,因为你执行持续时间/场景速度,所以 1/0.5 即 2。

关于ios - Spritekit 更新功能中的时间耗尽速度较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42657019/

相关文章:

ios - 如何在触摸屏幕时让 'poo' 出现在某个地方?

ios - setTexture 将我的 Sprite 的大小更改为更小,错误?

ios - 在 SpriteKit 节点上应用脉冲

ios - 在 ios 中使用 nsxmlparser 检索 xml 文件

ios - 如何更改 Xcode 8 中选项卡栏图标的高亮颜色?

ios - 在 iOS 上绘制热图

ios - swift 核心数据 : error: Failed to call designated initializer on NSManagedObject class 'NSManagedObject'

ios - 我如何在 IOS 谷歌地图 SDK 中计算从 A 点到 B 点的距离?

swift - 快速更改集合可选值?

ios - 使用 Metal 顶点和片段着色器将 MTLTexture 传递给 SCNProgram