だから私はいくつかのボディを持っています(私は実行時にますます作成することができます)、そして私はそれらをスクリーンの中心に磁化する必要があります。ワールドスペースでは(480/2 / WORLD_SCALE、320/2 / WORLD_SCALE)とします。私はbox2dを初めて使用するので、これを実現する簡単な方法があるかもしれませんが、次のようにしようとしています。
- 私は各体の位置と画面の中心位置を差し引きます-体を動かす必要がある場所への方向を取得します。
- 方向ベクトルを正規化します(p.1で見つけました)
- この正規化されたベクトルを私の重力パワー値に乗算します
- ベクトル(p。3で取得したもの)を現在のボディの速度に追加します
だからその後、私は欲しいものを手に入れました-ボディは画面の中央に磁化されます、そしてボディが止まることができるようにいくつかの摩擦とダンピングも追加します。しかし、私が推測しているように、重力ベクトルが一定の長さであるため、体の動きを完全に停止させることはできません。それは常に画面の中心に移動しようとし、それらの可能な最小速度はこの重力ベクトルの長さです。
ボディが1つしかない場合、ボディが画面の中心に近い場合は手順2、3を実行せず、重力のサイズはです。しかし、2つのボディが互いに衝突するため、2つのボディが画面の真ん中の位置に正確に配置されることはないため、ボディの位置を磁場の中心にバインドすることはできません。ですから、重力ベクトルを可変にすることはできません。摩擦をいじってもうまくいきません。ステップハックが役立つかもしれませんが、必要なのは、ある種の跳ね返る反力などを実装することだと思います。
私はbox2dを初めて使用しますが、物理学はあまり得意ではありません。
また重要なのは、SetLinearVelocityメソッドを使用してボディの速度を設定することです。
多分私は何かが足りないだけかもしれません、多分これを達成するためのbox2dのネイティブの方法があります。助けていただければ幸いです。