我在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)"
}
答案 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。