1

私は AnimatedSprite をプレーヤーとして持っており、 IAccelerometerListener を使用してプレーヤーを前後に移動しています。問題は、デバイスが動かずにテーブルに置かれている場合でも、プレーヤーが上または右に移動することです。

誰でも私が見逃したことを指摘できますか。以下は私のコードです。

public Scene onLoadScene() {
.....
physicsWorld = new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false);


    /** for POTRAIT */
    final Display display = getWindowManager().getDefaultDisplay();
    int cameraWidth = display.getWidth();
    int cameraHeight = display.getHeight();
    final Shape ground = new Rectangle(0,cameraHeight, CAMERA_WIDTH,0);
    final Shape roof = new Rectangle(0,cameraHeight - (player.getHeight() * 2)  , CAMERA_WIDTH, player.getHeight() / 2);
    final Shape left = new Rectangle(0,0, 2,cameraHeight);
    final Shape right = new Rectangle(cameraWidth , 0, 2, cameraHeight);

    final FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(0, 0, 1);
    PhysicsFactory.createBoxBody(this.physicsWorld, ground, BodyType.StaticBody, wallFixtureDef);
    PhysicsFactory.createBoxBody(this.physicsWorld, roof, BodyType.StaticBody, wallFixtureDef);
    PhysicsFactory.createBoxBody(this.physicsWorld, left, BodyType.StaticBody, wallFixtureDef);
    PhysicsFactory.createBoxBody(this.physicsWorld, right, BodyType.StaticBody, wallFixtureDef);

    this.mMainScene.attachChild(ground);
    this.mMainScene.attachChild(roof);
    this.mMainScene.attachChild(left);
    this.mMainScene.attachChild(right);

    mMainScene.registerUpdateHandler(physicsWorld);
    final Body grd = PhysicsFactory.createBoxBody(physicsWorld, player, BodyType.DynamicBody, FIXTURE_DEF);

    this.mMainScene.attachChild(player);
    physicsWorld.registerPhysicsConnector(new PhysicsConnector(player,grd, true, true));


}
4

1 に答える 1

0

しきい値を設定し、x値とy値がそのしきい値より大きい場合は、onAccelerationChangedメソッドをチェックインしてから、スプライトを更新します。それ以外の場合は、その更新手順を無視します。好き:

@Override
    public void onAccelerationChanged(AccelerationData pAccelerationData) {
        // TODO Auto-generated method stub
        if(pAccelerationData.getX() > THRESHOLD_X || pAccelerationData.getY() > THRESHOLD_Y) {
          // update your sprite now...

        }
    }
于 2013-02-25T07:56:49.103 に答える