この機能は、残念なことに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
は距離を取得するには:私はフラッシュと呼ばれるQuickBox2D私が書いたライブラリを使用して簡単な例を手早く
double dx = rigidBodyX - gravityWellX;
double dy = rigidBodyY - gravityWellY;
double dist = sqrt(dx * dx + dy * dy);
。構文がC++ Box2Dライブラリと大きく異なるが、基本的なプリンシパルは同じなので、それほど役に立ちません。それは完璧な例ではありませんが、あなたが始めるかもしれません。
See The Flash Example
私はあなたのフラッシュ版でいじっと サンプルプログラムdir.x = currVel.x +(強度* Math.cos(ANG))/(DIST * DIST)にライン49 + 50に変更しました。dir.y = currVel.y +(強度* Math.sin(ang))/(dist * dist); このコードの前にこれを追加してください。 var dist:Number = dist(big、little); – conradev
強度を上げる必要がありますが、これらの変更は逆平方法を適用します。 – conradev
あなたの右..距離に基づいて強度を増やす必要があります。私は助けになることができてうれしいです。 – Zevan