【问题标题】:pause the currentTime of -(void)update:(CFTimeInterval)currentTime暂停 -(void)update:(CFTimeInterval)currentTime 的 currentTime
【发布时间】:2014-03-15 14:23:16
【问题描述】:

我想知道是否可以在 -(void)update:(CFTimeInterval)currentTime 中暂停 currentTime

我成功地使用这个暂停了我的场景:

self.view.paused=YES;
self.paused=YES;
self.scene.view.paused = YES;

它有效,但在 -(void)update 中我有这个方法:

[_landscape update:currentTime];

问题是即使场景暂停,currentTime 也不会停止增加。 恢复场景后,我的_landscape速度发生了变化。

【问题讨论】:

    标签: objective-c sprite-kit


    【解决方案1】:

    我不知道你是否已经找到了这个问题的答案,但这里是我认为可以解决你的问题的解决方案。您需要做的是将游戏的当前时间设置为零,因此当取消暂停游戏时不会有时间流逝。换句话说,整个动画将停止并在您暂停游戏的那一刻恢复。我在更新中使用此方法来停止当前时间。

    if (_lastUpdateTime) {
            _dt = currentTime - _lastUpdateTime;
        } else {
            _dt = 0;
        }
        _lastUpdateTime = currentTime;
    
        if (_pauseButtonPressed) {
            _lastUpdateTime = 0;
            return;
        }
    

    第一部分设置当前时间和增量时间,第二部分将在游戏暂停时将当前时间设置为零。希望这会对你有所帮助。:)

    【讨论】:

    • 谢谢你的回答,除了确定游戏是否暂停,我已经做了类似你的事情,我看看 _dt>0.2。但你的情况更好,更干净。
    【解决方案2】:

    我的 Swift 版本基于 Adrian P 的回答。

    在我的游戏场景中,我有一个属性lastUpdateTime。游戏暂停时,此属性设置为 0。恢复时,当lastUpdateTime 等于或小于 0 时,lastUpdateTime 设置为当前时间。下一次更新将根据 currentTime 和lastUpdateTime 计算 deltaTime。

    // A BaseScene is a custom SKScene subclass that has controller support for tvOS.
    class GameScene : BaseScene {
        private var lastUpdateTime: NSTimeInterval = 0
    
        override func update(currentTime: CFTimeInterval) {
            if lastUpdateTime <= 0 {
                lastUpdateTime = currentTime
            } else {
                let deltaTime = currentTime - lastUpdateTime
                lastUpdateTime = currentTime
                Game.sharedInstance.update(deltaTime)
            }
        }
    
        // This method of BaseScene is called when a player presses pause 
        // on a controller (tvOS).
        override func handlePausePress(forPlayer player: PlayerIndex) {
            paused = true
            lastUpdateTime = 0            
        }        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 2023-03-12
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      相关资源
      最近更新 更多