我正在SpriteKit
构建一个相对简单的游戏,您可以使用ball.physicsBody.applyImpulse(someVector)
之类的内容根据用户的触摸位置反弹球。
我一直试图通过玩physicsWorld.gravity
向量的值和我在球上应用的冲量向量来理解重力和向量是如何工作的,我想我需要一些澄清;
如果我使用此代码:
self.physicsWorld.gravity = CGVectorMake(0, -10)
ball.physicsBody.applyImpulse(CGVectorMake(0, 10))
根据此代码和根据常识,球不应该移动,因为拉力和推力是相等的,或者至少在开始下降之前达到10
的确切距离在这种情况下?
实际上发生的事情是球 反弹并且超过 10个像素的距离。
为什么它表现得那样,我需要使用什么确切的值才能使矢量抵消以使球保持完全静止?
我会很高兴得到任何解释,提前谢谢。
答案 0 :(得分:0)
10不是像素,对于重力,它是米每秒,所以你需要取10并除以FPS得到1帧,(1/6米)然后你需要找出什么米到像素比率,这将获得像素数。对于冲动,它是牛顿秒,它推动1千米每秒1米。因此,您需要弄清楚物品的质量,以确定每秒实际移动的米数。因此,如果你的物体质量是1 KG,那么它将平衡为0.我不打算用实际数学来告诉你如何计算这些东西,你必须自己研究。
摘要:
重力单位是米/秒 冲动单位是新城第二AKA每分钟米数
您需要匹配单位才能使事情平衡为0
如果您想了解更多信息,请参阅https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKPhysicsBody_Ref/#//apple_ref/occ/instm/SKPhysicsBody/applyImpulse:和https://developer.apple.com/library/mac/documentation/SpriteKit/Reference/SKPhysicsWorld_Ref/index.html#//apple_ref/occ/instp/SKPhysicsWorld/gravity。