1

Unity3D をいじって、シーン内のオブジェクトに物理演算を追加しています。現在、画面の中央に球体 (惑星) があり、その外側に移動していない別の球体 (月) があります。ゲームを実行するとき、月に力を加えて惑星を周回させたいと思います。呼び出すことで力を加えることができましたrigidbody.AddForce()。これにより、指定された方向に移動しますが、軌道になりません。一定の速度で球体を連続的に周回するように力を加える方法がわかりません。

a を使用していくつかの例を試してみましたConfigurableJointが、軌道を回っていますが、少し跳ね始めてから軌道を開始します。私の目標は、互いに跳ね返ることができるが速度を失うことなく、独自の速度で軌道を周回する軌道周回衛星の束を作成することです。

何か案は?

4

2 に答える 2

0

一般的に言えば、最終的には失敗します。これは、積分法の丸め誤差により、ゆっくりと軌道から外れてしまうためです。提案された方法で非常に近づくことができますが、軌道を楕円として事前計算し、その後、停止する必要があると信じる理由が得られるまでその楕円を追跡するように見える、Kerbal Space Program のようなことを行うことを検討できます。軌道を厳密に「シミュレート」しています...

衝突が発生した場合は、通常の物理学で衝突を解決し、結果に基づいて新しい軌道を再計算して、それを追跡し始めます。

于 2015-07-14T15:10:56.753 に答える
0

月が周回するには、月に初速度を与える必要があります。次に、一定の力である惑星に向かって加速します。

ここに画像の説明を入力

ここに画像の説明を入力

gameObject.rigidbody.AddForce(1, 0, 0);
gameObject.constantForce.relativeForce = Vector3(0, 1, 0);
于 2014-12-08T02:23:39.170 に答える