为精灵套件加速物理时钟

时间:2014-01-02 21:26:53

标签: ios xcode sprite-kit skphysicsbody skphysicsworld

我有一个使用spritekit物理世界的动画。我一直在寻找是否有办法通过物理“快进”,只是获得结果或路径而不显示动画。我看了物理世界并没有看到任何东西吗?我怎么能这样做的想法?

基本上我想在决定执行之前向用户显示动画的结果位置。

1 个答案:

答案 0 :(得分:2)

显然你错过了SKPhysicsWorld中的speed财产:

  

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

请记住,这会影响所有机构,并且没有将系统重置为先前状态的内置方法。此外,模拟必须至少前进一步才能使更改变得可见,因此您必须将速度属性设置为updatedidEvaluateActions中的30。方法并将其重置为didSimulatePhysics中的1。这也是您检查快进步骤结果的方法。

如果身体以固定的速度行进并且不会受到碰撞或重力等影响,您可以使用纯三角(并且不需要速度属性)来找到身体的位置在n个步骤中,或者身体在至少n个距离内行进的步数。

我无法想到一种方法可以推进,直到身体到达某个目的地,身体不会以固定的速度行进,而且你没有简单的方法来预测到达的时间而不会实际运行物理模拟。这将需要能够独立于场景的其他部分推进世界(并且对身体的超时保护从未实际到达那里),这只能通过第三方物理引擎实现。你仍然可以使用带有Sprite Kit的Box2D或Chipmunk。