2016-09-15 13 views
0

私はImpulseの力で空中に打ち上げられたボールを持っています。ボールノードには重力などがありますが、何をしようとしているのは、もともとボールを空中に打ち込んだインパルスの力を止めることです。私はインパルスでそれが大砲1のようなことを知っていて、タイプのことをしました。重力を除いてノード上のすべての力をクリアする方法はありますか? ImはXcodeとSWIFTにscenekitを使用しますが客観Cがかかりますがscnnodeに作用するすべての力を消す方法

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

に答える私は持っていない行は、Xcodeで任意のエラー・インジケータを通過するがのは、残念ながら

Ball.physicsBody?.clearAllForces() 
+0

'clearAllForces'と同様に、physicsBodyの' velocity'と 'angularVelocity'を' SCNVector3Zero'に設定しようとします。 –

+0

うわー!明らかに、あなたができるようにノードを前方に推進した力をクリアしたい場合。再びノードをクリーンスラットで再起動します。あなたはそこに速度などをクリアする必要があります信じられないほど素晴らしいあなたはいつも私の質問に答える天才@James P – Hunter

+1

これを念頭に置いてください:@ジェームスPの提案を使用して、フレームのボールをフリーズします。私が意味することは、ボールが落ちている場合は速度を収集することですが、この方法を使用すると、フレームの重力が停止し、重力の速度が再開します。これを防ぐには、速度を設定するときにz速度を維持し、z速度がゼロよりも小さいことを確認します。 –

答えて

1

を全く何もしませんSceneKitの物理を使っていましたが、私は物理学を教えました。おそらくこれが役に立ちます。

インパルスと力は2つの異なる概念です。 impulse: trueを設定すると、力の代わりにインパルスを適用したいと言っています。インパルス(J)は、運動量の変化であり、一定の時間間隔にわたって加えられる力にも等しい。だから、:あなたは衝動を適用すると

インパルス=力×時間

速度

におけるインパルス=質量Xの変更は、だから、あなたはあなたのノードの速度を変更しています。これは、あなたがapplyForceを呼び出したときに起こった、私と一度限りの取引に見えます。インパルスをクリアする必要はありません。 (設定impulse: falseは完全に別の問題です)

関連する問題