嘿,我有一个球是由一个脉冲力发射到空中的。球节点有重力等,但我要做的基本上是停止最初在空中发射球的冲力。我知道冲动就像一门大炮,做了一件事。但是有没有办法清除节点上的所有力,当然除了重力?
我在xcode和SWIFT中使用scenekit,但会得到客观的C答案

 Ball.physicsBody?.applyForce(velocity, impulse: true)

该行通过xcode中的任何错误指示器,但很遗憾,它什么也不做
Ball.physicsBody?.clearAllForces()

最佳答案

我没有用过SceneKit的物理,但我教过物理,也许这会有帮助。
冲量和力是两个不同的概念。当您设置impulse: true时,表示希望应用脉冲而不是力。冲量(J)是动量的变化,也等于在一段时间内施加的力。所以:
脉冲=力x时间
脉冲=质量x速度变化
所以当你施加脉冲时,你改变了你的节点速度。在我看来,这是一笔一次性交易,在您调用applyForce时生效。没有必要消除这种冲动。(设置impulse: false完全是另一回事,这意味着一种持续的力量。)

10-07 19:56