2
宇宙船の動的スラスタバランシング
私のゲームの宇宙船は、任意の量のスラスタを任意の回転で任意の場所に取り付けてプレイヤーが構築することを意図しています。現在、船を所定の角度に回転させる(加速と減速)ための汚いコードがあります。 これは、赤い線が指す場所に面し、左に回転するように指示された対称的な船の例です。 しかし、ご想像のとおり、プレイヤーがスラスタをどこに置いたかによっては、望ましくない直線的な力が船に影響を与えることがあります。この場合、船は前進し始めます。 スラスタが線形速度を発生させないために適用できる最大推力を見つけることができるかどうかについて詳しく説明しています。(上記の場合、後部スラスタからの力に対抗するものが何もないため、それはありません。前部スラスタは互いに殺します)。 これまでに思いついたのは、「回転効率」を決定する式です。たとえば、直線運動に関連してどの程度の回転が発生するかです。 a-スラスタaへの位置ベクトルb-スラスタbへの位置ベクトルv1-スラスタaからの力v2-スラスタbからの力 EfficiencyDelta = a.cross(v1)/ | v1 | -(a.cross(v1)+ b.cross(v2))/ | v1 + v2 | 、基本的に「a.cross(v1 * t)/ | v1 |」ターン効率となるはずです。そして、新しいスラスタを発射する価値があるかどうかを確認するために、スラスタの回転効率を合わせて差し引きます。 スラスタがオン/オフになっているわけではないことを認識したときに問題が発生しますが、スラストを0から1に変えることができます。また、プレイヤーが船を前進させたい場合の対処方法 もちろん、回転/移動する量のバランスが必要です。 私はロケット科学者ではないので、各スラスタのスロットルをこのように計算し、正しい方向にプッシュすることが可能かどうかを教えてくれる人がいることを望んでいます。 お時間をいただきありがとうございます!/キム