3

andengine gles2 anchor center を使用してライブ壁紙を開発しようとしていますが、物理オブジェクトを追加すると、重力のために下に移動する代わりに上に移動し
ていました。問題

これが私のコードです

FixtureDef FIXTURE_DEF = PhysicsFactory.createFixtureDef(1, 0.5f,
                0.5f);
mPhysicsWorld = new PhysicsWorld(new Vector2(0,
                        SensorManager.GRAVITY_EARTH), false);
final AnimatedSprite animatedSprite;
animatedSprite = new AnimatedSprite(500, 250,
                        this.mBoxFaceTextureRegion, this.getVertexBufferObjectManager());

body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, animatedSprite,
                        BodyType.DynamicBody, FIXTURE_DEF);

scene.attachChild(animatedSprite);
animatedSprite.animate(200);
mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(
                        animatedSprite, body, true, true));
4

2 に答える 2

5

SensorManager.GRAVITY_EARTH-1を掛けるだけです。

于 2013-02-09T03:37:47.730 に答える
0

負の重力を設定すると、センサー データに適切に応答しませんでした。オーバーライドされたメソッドでセンサー データに加速度を追加することで、**onAccelerationChanged()**センサーが平らな状態で落下するオブジェクトを作成できます。

public void onAccelerationChanged(final AccelerationData pAccelerationData) { /* Add constant value for vertical gravity*/ final Vector2 gravity = Vector2Pool.obtain(pAccelerationData.getX(), pAccelerationData.getY() + 4.0); this.mPhysicsWorld.setGravity(gravity); Vector2Pool.recycle(gravity); }

これにより、物理世界が実際の重力体験になり、センサー データの影響を受けたオブジェクトが適切に取得されます。

于 2014-02-18T08:01:42.207 に答える