【问题标题】:Stop button in sprite kit objective c精灵套件目标 c 中的停止按钮
【发布时间】:2015-03-26 18:38:02
【问题描述】:

我在 sprite kit 中构建了一个游戏,我的所有 sksprite 节点都在增加力 cgvector 移动。 我想在游戏中添加一个停止按钮,但如果我要停止所有节点,我将无法恢复它们所拥有的力量。所以我不能停止游戏并从同一点再次玩。 那么有人知道如何在节点上节省力量吗?或者我怎么能到停止按钮? 谢谢。

【问题讨论】:

    标签: objective-c ios8 sprite-kit skspritenode


    【解决方案1】:

    您拥有的SKPhysicsWorld 对象有一个名为speed 的属性。

    来自 Apple.com:

    默认值为 1.0,表示模拟以正常速度运行。非默认值会更改物理模拟中时间流逝的速率。例如,速度值为 2.0 表示物理模拟中的时间是场景模拟时间的两倍。值 0.0 会暂停物理模拟。

    因此,基本上您可以将力保持在所有节点上,但有效地“暂停”物理模拟。


    或者,您可以使用paused 属性来停止所有动作(不仅仅是使用力的物理动作)

    所以如果你要使用 speed 属性:

    self.physicsWorld.speed = 0.0;
    

    如果您有很多事情要做,或者如果您想创建一种方法来逐渐减慢慢动作效果的速度,这将非常有用。由于您不必在 sprite kit 中实际制作physicsWorld 对象(它在制作场景时被初始化),这就是您所要做的。

    暂停一切也不是很复杂:

    self.scene.view.paused = YES;
    

    【讨论】:

    • 谢谢。它的工作。另一个问题:我可以停止 skaction,什么时候停止?
    • 当然。你只需让paused 属性NO 继续
    • 我想停止痉挛动作。不是所有的人。还过得去吗?
    • 好吧,每个 SKAction 也有一个 speed 属性,因此您可以将其设置为 0 以暂停该特定操作,然后当您想继续时,您可以将 speed 更改回1.
    【解决方案2】:

    使用 SKView 的 paused 属性:

    self.scene.view.paused = YES;
    

    这将停止所有动作和物理模拟。

    回复here.

    【讨论】:

    • 它确实停止了所有的点头,但我怎样才能回到游戏中呢?我怎样才能停止停止?
    • 此代码仅停止查看点仍在移动它只是因为我无法看到它
    【解决方案3】:

    SKSpriteNode 有一个名为 userData 的字典属性。您可以将 dx 和 dy 速度存储在那里以供以后检索。

    如果视图中的所有节点都停止移动,您可以使用以下方法枚举所有节点:

    for(SKSpriteNode *object in self.children) {
        // set velocity of each node
    }
    

    如果只有部分节点需要进行速度变化,则需要将每个受影响的节点添加到数组并枚举该数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多