如何清除作用于scnnode的所有力

时间:2016-09-15 15:30:22

标签: swift xcode physics scenekit

嘿,我有一个由Impulse部队在空中发射的球。球节点有重力等等但是我试图做的基本上是停止最初在空中发射球的冲击力。我知道Impulse它就像一个大炮而且做了类型的东西。但除了重力之外,有没有办法清除节点上的所有力? 我在xcode和SWIFT中使用scenekit,但将采用Objective C答案

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

该行传递了xcode中的任何错误指示符,但遗憾的是,它根本不做任何事情

Ball.physicsBody?.clearAllForces()

1 个答案:

答案 0 :(得分:1)

我没有在SceneKit中使用过物理学,但我教过物理学,也许这会有所帮助。

冲动和力量是两个不同的概念。当你设置impulse: true时,你声明你希望施加一股力量的冲动INSTEAD。脉冲(J)是动量的变化,也等于在设定的时间间隔内施加的力。所以:

impulse = force x time

脉冲=质量x速度变化

因此,当您应用脉冲时,您正在改变节点的速度。这在我看来是一次性交易,在您调用applyForce时实现。应该没有必要清除这种冲动。 (设置impulse: false完全是另一回事,意味着持续的力量。)