我有一个使用 spritekit 物理世界的动画。我一直在寻找是否有办法通过物理“快进”并获得结果或路径而不显示动画。我看着physicsWorld并没有看到任何东西?关于我如何做到这一点的任何想法?
基本上我想在用户决定执行之前向用户展示动画的结果位置。
我有一个使用 spritekit 物理世界的动画。我一直在寻找是否有办法通过物理“快进”并获得结果或路径而不显示动画。我看着physicsWorld并没有看到任何东西?关于我如何做到这一点的任何想法?
基本上我想在用户决定执行之前向用户展示动画的结果位置。
显然您错过了SKPhysicsWorldspeed
中的属性:
默认值为 1.0,表示模拟以正常速度运行。默认值以外的值会更改物理模拟中时间流逝的速率。例如,速度值为 2.0 表示物理模拟中的时间是场景模拟时间的两倍。值 0.0 会暂停物理模拟。
请记住,这将影响所有主体,并且没有内置方法可以将系统重置为以前的状态。此外,模拟必须至少提前 1 步才能使更改变得可见,因此您必须在update
ordidEvaluateActions
方法中将 speed 属性设置为 30 并将其重置回 1 in didSimulatePhysics
。这也是您检查快进步骤结果的方法。
如果身体以固定速度行进并且不会受到碰撞或重力等任何东西的影响,您可以使用纯三角函数(并且不需要速度属性)来查找身体在 n 步内的位置,或者多少身体至少要走 n 距离的步数。
在身体到达某个目的地之前,我想不出一种前进的方法,在该目的地身体不以固定速度行进,并且如果不实际运行物理模拟,您就无法轻松预测到达时间。这将需要能够独立于场景的其他部分推进世界(并通过超时来防止身体从未真正到达那里),这只有通过第 3 方物理引擎才能实现。不过,您仍然可以将 Box2D 或 Chipmunk 与 Sprite Kit 一起使用。