精灵套件目标 c 中的停止按钮

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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

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

【讨论】:

以上是关于精灵套件目标 c 中的停止按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何在精灵套件中的按钮上设置冷却时间

如何检测精灵套件中的碰撞?

在精灵套件中发生碰撞时停止对象

使用精灵套件游戏覆盖功能

精灵套件游戏中的计分系统

检测精灵套件中的碰撞