理解 SpriteKit 中的重力和矢量

Understanding gravity and vectors in SpriteKit

我正在 SpriteKit 中构建一个相对简单的游戏,您可以使用 ball.physicsBody.applyImpulse(someVector).
之类的东西根据用户的触摸位置使球反弹 我一直在尝试通过使用 physicsWorld.gravity 矢量的值和我施加在球上的冲量矢量来了解重力和矢量的工作原理,我想我需要一些说明;

如果我使用此代码:

self.physicsWorld.gravity = CGVectorMake(0, -10)
ball.physicsBody.applyImpulse(CGVectorMake(0, 10))

根据此代码并根据常识,球不应该完全不动,因为拉力和推力相等,或者至少在开始前上升 10 的确切距离在这种情况下摔倒?
实际上,球 确实 弹起,并且向上 超过 10 个像素。
为什么它会这样,我需要使用什么确切的值来抵消向量才能使球保持完全静止?
我很乐意提供任何解释,提前致谢。

那个10不是像素,对于重力来说,它是米每秒,所以你需要用10除以FPS得到1帧,(1/6米)然后你需要弄清楚什么米与像素的比率是,这将为您提供像素数。对于冲量,它是牛顿秒,即每秒推动 1 千克 1 米。所以你需要计算出物体的质量才能计算出它每秒实际移动了多少米。所以如果你的物体质量是 1 KG,那么它会平衡为 0。我不会做实际的数学来告诉你如何计算这些东西,你必须自己研究。

总结:

重力单位是米每秒 冲量单位是纽顿秒又名千克米每秒

您需要匹配单位才能平衡到 0

如果您想了解更多信息,请参阅 https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKPhysicsBody_Ref/#//apple_ref/occ/instm/SKPhysicsBody/applyImpulse: and https://developer.apple.com/library/mac/documentation/SpriteKit/Reference/SKPhysicsWorld_Ref/index.html#//apple_ref/occ/instp/SKPhysicsWorld/gravity