我和一个 friend 正在SpriteKit中制作一些东西的原型(prototype)。这不是我 friend 第一次使用它,而是我第一次。
我们有一个正方形的简单控件。您可以在“地面”节点上来回运行,并且可以触摸跳转按钮以“跳转”。
对于给定的质量,引力等数字,以下
[self.physicsBody applyForce:CGVectorMake(0, 1500000)];
在以iPhone模式运行iPad4(目前仅适用于iPhone)时,会导致正常的外观跳跃(几乎是一个小的Bunnyhop),但是在我的5S上,跳跃大约高20到40倍,而在4S上,跳跃实际上是高100或200倍。 (“高倍”是根据视觉观察得出的估计值,但iPad看起来很正常,5S看起来像是个超人跳跃,而4S看起来像是超人吃了菠菜,而他的妻子则在跳下前被扑灭了)
完全相同的代码在所有设备上运行。我不确定要看哪里或什么原因造成的。
最佳答案
如果要立即应用,则应应用applyImpulse而不是applyForce。关于applyForce,Apple文档指出
步长的微小时序差异可能会导致较大差异,这是因为上的作用力非常大,而仅1帧。如果您正在使用applyForce,则应该在模拟的每个步骤中都进行此操作,以保持一段时间内施加的力。通常,跳跃运动是在非常短的时间内进行的,因此经常使用applyImpulse。
这是Apple文档中有关力与冲动的另一种说法: