1

AndEngineとBox2dを使用してゲームを開発しています。私は体に力を加えて、体を重力と同じ「高さ」に保つようにしています。次のようにシーンを設定しました。

public void onAccelerationChanged(final AccelerationData pAccelerationData) {
        gravity = Vector2Pool.obtain(pAccelerationData.getX(), pAccelerationData.getY());
        this.mPhysicsWorld.setGravity(gravity);
        Vector2Pool.recycle(gravity);
    }

次に、適用する力を設定する必要があります。

body.applyForce(new Vector2(0,-*gravity*), new Vector2(body.getWorldCenter()));

画面を傾けたときに力として重力を加えることができるように、重力の値を取得するにはどうすればよいですか?

4

2 に答える 2

1

重力の影響を受けないオブジェクトを作成しようとしている場合は、そのボディを静的または動的に設定できます。それはより効率的であり、余分な処理を回避します。

ところで、あなたはすでにこの行でベクトルをリサイクルしているので、あなたはnullになっていると思います

Vector2Pool.recycle(gravity);

編集:

なぜあなたは単にこのようなものを使わないのですか?

public void onAccelerationChanged(final AccelerationData pAccelerationData) {
    gravity = Vector2Pool.obtain(pAccelerationData.getX(), pAccelerationData.getY());
    this.mPhysicsWorld.setGravity(gravity);
    body.applyForce(new Vector2(-pAccelerationData.getX(), -pAccelerationData.getY()), new Vector2(body.getWorldCenter()));
    Vector2Pool.recycle(gravity);
}
于 2012-07-01T06:40:57.017 に答える
0

Box2D拡張機能にいくつかの変更を加えて、Box2Dの最新バージョンのsetGravityScaleメソッドを追加しました。リンクを投稿しました、

how-do-i-make-a-body-ignore-gravity-andengine

たとえば、体に重力呼び出しを無視させるには、

Body.setGravityScale(0.0f);

あなたの場合、ボディは動的である可能性があります。重要なのは、重力に逆らう必要のあるすべてのオブジェクトに力を加える必要がないということです。例でこれを行うコードは、Box2D2.2.1から取得されました。

それがどのように実装されたかの説明を含めました。GLES1用に提供されているダウンロードもあります。

お役に立てれば。

于 2012-10-07T21:14:17.457 に答える