2016-09-15 35 views
0

嘿,我有一個能夠通過沖擊力在空中發射的球。球節點具有重力等,但我試圖做的是基本停止原先在空中發射球的衝擊力。我知道,用Impulse就像一個大炮那樣做事。但是有沒有辦法清除節點上除力量之外的所有力量?使用Xcode和SWIFT scenekit 林,但將目標C答案如何清除作用在scnnode上的所有力量

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

線穿過在Xcode中的任何錯誤的指標,但不我們做任何事情不幸

Ball.physicsBody?.clearAllForces() 
+0

除了'clearAllForces'嘗試設置physicsBody的'velocity'和'angularVelocity'爲'SCNVector3Zero' –

+0

哇!顯然,如果你想清除推動節點前進的力量,那麼你就可以。再次用乾淨的板條重新啓動節點。你必須清除速度等。難以置信的你的怪胎,你總是回答我的問題天才@詹姆斯P – Hunter

+1

記住這一點:使用@詹姆斯P的建議將凍結球的框架。我的意思是,如果球落下,它會收集速度,但如果使用這種方法,它會停止一個幀的重力,從而重新啓動重力的速度。爲了防止這種情況,您可以在設置速度時保持z速度,並確保z速度小於零。 –

回答

1

我沒有使用了SceneKit中的物理,但我已經教了物理學,也許這會有所幫助。

衝動和力量是兩個不同的概念。當你設置impulse: true你說你想要施加衝動INSTEAD的力量。衝動(J)是動量的變化,也等於在設定的時間間隔內施加的力。所以:

衝動=力×時間的速度

所以,當你申請的衝動,你改變了節點的速度

衝動=質量×變化。這對我來說似乎是一次性交易,在您調用applyForce時生效。應該沒有必要清除衝動。 (設置impulse: false完全是另一回事,意味着持續的力量。)