用物理SKSpriteNode子项暂停SpriteKit游戏

时间:2014-03-09 12:11:06

标签: objective-c sprite-kit game-physics skspritenode skphysicsworld

我在SKNode *_fgLayer上有一个带有动态物理主体的SKSpriteNode。

现在,当我暂停或取消暂停游戏时,我希望SKSpriteNode保持原位而不是旋转或跌落。如果我只使用_fgLayer.paused = YES;,则SKSpriteNode不会保留在原位,而是会旋转并降低。如果我在暂停时设置physicsBody.dynamic = NO;,则在取消暂停时设置physicsBody.dynamic = YES;则可以正常工作。

但是,经过几次尝试后,我总是遇到以下崩溃:

"Assertion failed: (typeA == b2_dynamicBody || typeB == b2_dynamicBody), function SolveTOI, file /SourceCache/PhysicsKit/PhysicsKit-4.6/PhysicsKit/Box2D/Dynamics/b2World.cpp, line 670."

所以,我想设置一个physicsBody.dynamic = NO;并返回不起作用。

有没有人知道
如何在游戏暂停时暂停动态物理机构保持原位?

2 个答案:

答案 0 :(得分:21)

尝试将physicsWorld.speed设置为0.0:

scene.physicsWorld.speed = 0.0

Apple SKPhysicsWorld Ref

答案 1 :(得分:3)

设置scene.view.paused = YES对我有用 - 特别是当子节点上有动作运行时。

self.scene.view setPaused:YES