Пауза SpriteKit игра с физикой SKSpriteNode ребенка

у меня есть SKSpriteNode с телом динамической физики на SKNode *_fgLayer.

теперь, когда я приостанавливаю или отменяю игру, я хочу, чтобы 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 ответов


попробуйте установить свой physicsWorld.скорость до 0,0:

scene.physicsWorld.speed = 0.0

Apple SKPhysicsWorld Ref.


настройки сцены.вид.paused = YES работает для меня-особенно, когда на дочернем узле выполняются действия.

self.scene.view setPaused:YES