私は宇宙船を使った物理ベースのゲームを開発しています。
宇宙船は、関節で接続された円から構成されます。一部のサークルにはエンジンが取り付けられています。
エンジンは円の中心を中心に回転し、推力を生み出すことができます。船のエンジンごとに回転と推力を設定することで、船を一方向に動かしたり、ある点を中心に回転したりしたい。
これを達成するために各エンジンに必要な回転と推力を見つけるにはどうすればよいですか?
私は宇宙船を使った物理ベースのゲームを開発しています。
宇宙船は、関節で接続された円から構成されます。一部のサークルにはエンジンが取り付けられています。
エンジンは円の中心を中心に回転し、推力を生み出すことができます。船のエンジンごとに回転と推力を設定することで、船を一方向に動かしたり、ある点を中心に回転したりしたい。
これを達成するために各エンジンに必要な回転と推力を見つけるにはどうすればよいですか?
回答:
エンジンが1つしかない船舶の単純な状況を想像してみましょう。船を動かすには、スラスタを目的の方向から遠ざけ、突き出すだけです。それは私たちが行きたい方向に私たちをプッシュします。1つのスラスタのみで構成される船を回転させることはできません。
船を3つのエンジンにスケーリングして、より興味深いものにします。
この船を上と左に移動したい場合は、すべてのスラスタを反対方向に向けて発射します。
直線運動を処理する単一のスラスタと同じソリューション。
しかし、スラスターがない場合はどうでしょうか?負荷が等しくありませんか?
同じ戦略に従うと、船が回転します。多くの状況では、これはほとんど不可避であり、利用可能なスラスタをより有効に利用できるように船の向きを調整するため、場合によっては好ましいでしょう。
これを軽減するための1つの戦略は、平準化です。船を目的の動きの軸に沿って分割します。
次に、右側と左側が等しくなるようにします。彼らがそうするまで彼らがスラスタ出力をスケーリングしないならば。これにより、推力が適用されなくなります。代わりに回転を引き起こして突き出すか、プレーヤーにスラスタを再編成して船の再設計を強制するかを決めるのはあなた次第です。
回転はどうですか?
この質問はアイデアを非常によく説明しています。
重心を計算する必要があります。次に、トルクを計算します、各スラスタによって提供されるます。ラッキーなことに、スラスタが回転するので、スラスターを回転させて最大トルクを提供できます。最大トルクは、直角からモーメントアームに向かいます。トルクの合計を適用すると、重心を中心にボディが回転します。船の橋のような他の任意の回転点を選択することもできます。
所定の位置で確実に回転したい場合は、船を直線的に動かすスラスタの推力を縮小することができます。正のトルクを持つすべてのスラスタと負のトルクを持つすべてのスラスタを合計し、それらの絶対値を比較することでそれを行うことができます。絶対値が大きいグループは、他のグループの絶対値と一致するように縮小する必要があります。
Amit Patelにも非常に役立つリソースがあります。
ローカル検索で解決しました。動作していますが、パフォーマンスはほぼ悪いです。理論的な力学を使う方がいいかもしれませんが、私はそれを知りません。