iOS SpriteKit:applyForce对物理体的影响完全不同,具体取决于设备型号

时间:2015-07-08 13:41:52

标签: ios sprite-kit

我和朋友正在SpriteKit中做一些原型。这不是我朋友第一次使用它,但这是我的第一次。

我们可以简单地控制正方形。您可以在“地面”节点上来回运行,您可以触摸跳转按钮以“跳转”。

使用一组给定的质量,重力等数字,以下

[self.physicsBody applyForce:CGVectorMake(0, 1500000)];
在iPhone模式下在iPad4上运行时,

导致正常的跳跃(几乎是一个小的兔子店)(应用程序目前仅为iPhone),但在我的5S上,跳跃大约高出20到40倍,在4S上跳跃实际上是100或200倍。 (“时间更高”是基于视觉观察的猜测,但iPad看起来很正常,5S看起来像超人跳跃,4S看起来像超人吃了他的菠菜,他的妻子在他跳之前就熄灭了)

所有设备上都运行完全相同的代码。我不确定在哪里看或者可能导致这种情况。

1 个答案:

答案 0 :(得分:7)

如果您即时应用它,您应该使用Incox而不是applyForce。关于applyForce,Apple docs状态

  

"加速度适用于单个模拟步骤(一个   帧)"

可能是非常 步骤的时间差异导致了很大的差异,因为力量非常大,只有1帧 。如果您使用的是applyForce,则应该在模拟的每个步骤中执行此操作,以保持在一段时间内施加的力。通常,跳跃的运动时间很短,因此经常使用applyImpulse。

以下是Apple docs关于强制与冲动的另一个引用:

  

"根据数量施加力一段时间   施加力和时间之间经过的模拟时间   处理模拟的下一帧。所以,申请一个   对身体持续的力量,你需要做出相应的方法   每次处理新帧时调用。力量通常用于   连续效应冲动使瞬间变化   身体的速度与模拟时间的数量无关   已经过去了。冲动通常用于立即改变a   身体的速度。"