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