モジュラー宇宙船制御


8

私は宇宙船を使った物理ベースのゲームを開発しています。

宇宙船は、関節で接続された円から構成されます。一部のサークルにはエンジンが取り付けられています。

エンジンは円の中心を中心に回転し、推力を生み出すことができます。船のエンジンごとに回転と推力を設定することで、船を一方向に動かしたり、ある点を中心に回転したりしたい。

これを達成するために各エンジンに必要な回転と推力を見つけるにはどうすればよいですか?

ここに画像の説明を入力してください



1
pidコントロールen.wikipedia.org/wiki/PID_controllerを確認することを忘れないでください。これにより、不必要な変動(一時的な不安定性)や不自然なターゲティングが防止されます。
フセイントゥグルブユキシク2013年

回答:


6

エンジンが1つしかない船舶の単純な状況を想像してみましょう。船を動かすには、スラスタを目的の方向から遠ざけ、突き出すだけです。それは私たちが行きたい方向に私たちをプッシュします。1つのスラスタのみで構成される船を回転させることはできません。

船を3つのエンジンにスケーリングして、より興味深いものにします。

ここに画像の説明を入力してください

この船を上と左に移動したい場合は、すべてのスラスタを反対方向に向けて発射します。

ここに画像の説明を入力してください

直線運動を処理する単一のスラスタと同じソリューション。

しかし、スラスターがない場合はどうでしょうか?負荷が等しくありませんか?

ここに画像の説明を入力してください

同じ戦略に従うと、船が回転します。多くの状況では、これはほとんど不可避であり、利用可能なスラスタをより有効に利用できるように船の向きを調整するため、場合によっては好ましいでしょう。

これを軽減するための1つの戦略は、平準化です。船を目的の動きの軸に沿って分割します。

ここに画像の説明を入力してください

次に、右側と左側が等しくなるようにします。彼らがそうするまで彼らがスラスタ出力をスケーリングしないならば。これにより、推力が適用されなくなります。代わりに回転を引き起こして突き出すか、プレーヤーにスラスタを再編成して船の再設計を強制するかを決めるのはあなた次第です。

回転はどうですか?

この質問はアイデアを非常によく説明しています。

ここに画像の説明を入力してください

重心を計算する必要があります。次に、トルクを計算します、各スラスタによって提供されるます。ラッキーなことに、スラスタが回転するので、スラスターを回転させて最大トルクを提供できます。最大トルクは、直角からモーメントアームに向かいます。トルクの合計を適用すると、重心を中心にボディが回転します。船の橋のような他の任意の回転点を選択することもできます。

所定の位置で確実に回転たい場合は、船を直線的に動かすスラスタの推力を縮小することができます。正のトルクを持つすべてのスラスタと負のトルクを持つすべてのスラスタを合計し、それらの絶対値を比較することでそれを行うことができます。絶対値が大きいグループは、他のグループの絶対値と一致するように縮小する必要があります。

Amit Patelにも非常に役立つリソースがあります。

ここに画像の説明を入力してください

彼はここで構成可能な宇宙船に関する4部シリーズを行いました:パート1パート2パート3パート4


これには他の(よりエレガントな)解決策があります。しかし、理想的には、プレイヤーが優れたデザインを作成すれば、これらの戦略が機能するはずです。この回答は、この種のコントロールの基本的な出発点としてのみ意図されています。改善の余地はたくさんあります。
MichaelHouse

-5

ローカル検索で解決しました。動作していますが、パフォーマンスはほぼ悪いです。理論的な力学を使う方がいいかもしれませんが、私はそれを知りません。


4
-1、それは非常にあいまいな答えです。問題を解決するために実際に何をしたか説明していただけますか?
MichaelHouse
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.