【发布时间】:2016-08-19 00:38:25
【问题描述】:
我正在SpriteKit 中构建一个相对简单的游戏,您可以在其中使用ball.physicsBody.applyImpulse(someVector) 之类的东西根据用户的触摸位置反弹球。
我一直在尝试通过使用physicsWorld.gravity 向量的值和施加在球上的脉冲向量来了解重力和向量的工作原理,我想我需要澄清一下;
如果我使用此代码:
self.physicsWorld.gravity = CGVectorMake(0, -10)
ball.physicsBody.applyImpulse(CGVectorMake(0, 10))
根据这个代码和常识,球不应该根本不动,因为拉力和推力是相等的,或者至少在开始落入之前上升10的确切距离案例?
实际上发生的情况是,球确实弹了起来,并且向上移动了超过 10个像素的距离。
为什么会这样,我需要使用什么确切的值来抵消矢量以使球保持完全静止?
我很乐意提供任何解释,在此先感谢。
【问题讨论】:
-
问题是完全混淆两个不相关的事情。 "applyImpulse" 只是对游戏的一帧应用脉冲。 (所以,大约 1/100 秒!)物理 世界 设置“.gravity”是完全不相关的,它创建了一个始终运行的场。
-
“实际上发生的情况是,球确实会弹起来,并且会飞很长的距离” 很简单,这取决于球的质量。您只是在 1/100 秒内踢了它一脚(短暂的硬踢)。高度仅取决于质量。
标签: ios swift vector sprite-kit physics