2

現在、私は自分のゲームで Box2D 物理エンジンを使用しています。すべての物体が任意の 1 点に引き付けられるような重力井戸を作成できるかどうか疑問に思っていました。これを行う特定の方法はありますか、または各ボディにある種のカスタムフォースを適用する必要がありますか? (私は静的な超高密度ボディを作成しようとしましたが、Box2D はニュートンの万有引力の法則をボディ ツー ボディに適用しません)

また、反重​​力をうまく作る方法はありますか?任意の点を中心とした密度の高い球体を作成し、浮力を使用してこれを実現できますか?

4

1 に答える 1

4

残念ながら、この機能は Box2D には組み込まれていません。最も簡単な方法は、重力井戸と剛体の間の角度と距離を取得し、それに応じて体の速度を設定することです。

角度を取得するには:

double dx = rigidBodyX - gravityWellX;
double dy = rigidBodyY - gravityWellY;
double angle = atan2(dy, dx);
// angle is in radians, use atan2(dy, dx) / PI * 180 if 
// you need degrees

距離を取得するには:

double dx = rigidBodyX - gravityWellX;
double dy = rigidBodyY - gravityWellY;
double dist = sqrt(dx * dx + dy * dy);

フラッシュと、私が作成した QuickBox2D というライブラリを使用して、簡単な例を作成しました。構文が C++ Box2D ライブラリと大きく異なるため、あまり役に立たないかもしれませんが、基本的な原則は同じです。これも完璧な例ではありませんが、手がかりになるかもしれません。

フラッシュの例を見る

于 2010-12-06T05:31:31.847 に答える