我正在 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/