精灵套件目标 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 中的停止按钮的主要内容,如果未能解决你的问题,请参考以下文章