我和朋友正在SpriteKit中做一些原型。这不是我朋友第一次使用它,但这是我的第一次。
我们可以简单地控制正方形。您可以在“地面”节点上来回运行,您可以触摸跳转按钮以“跳转”。
使用一组给定的质量,重力等数字,以下
[self.physicsBody applyForce:CGVectorMake(0, 1500000)];
在iPhone模式下在iPad4上运行时,导致正常的跳跃(几乎是一个小的兔子店)(应用程序目前仅为iPhone),但在我的5S上,跳跃大约高出20到40倍,在4S上跳跃实际上是100或200倍。 (“时间更高”是基于视觉观察的猜测,但iPad看起来很正常,5S看起来像超人跳跃,4S看起来像超人吃了他的菠菜,他的妻子在他跳之前就熄灭了)
所有设备上都运行完全相同的代码。我不确定在哪里看或者可能导致这种情况。
答案 0 :(得分:7)
如果您即时应用它,您应该使用Incox而不是applyForce。关于applyForce,Apple docs状态
"加速度适用于单个模拟步骤(一个 帧)"
可能是非常 小步骤的时间差异导致了很大的差异,因为力量非常大,只有1帧 。如果您使用的是applyForce,则应该在模拟的每个步骤中执行此操作,以保持在一段时间内施加的力。通常,跳跃的运动时间很短,因此经常使用applyImpulse。
以下是Apple docs关于强制与冲动的另一个引用:
"根据数量施加力一段时间 施加力和时间之间经过的模拟时间 处理模拟的下一帧。所以,申请一个 对身体持续的力量,你需要做出相应的方法 每次处理新帧时调用。力量通常用于 连续效应冲动使瞬间变化 身体的速度与模拟时间的数量无关 已经过去了。冲动通常用于立即改变a 身体的速度。"