【问题标题】:Libgdx Accelerometer not working?Libgdx 加速度计不工作?
【发布时间】:2014-02-17 02:02:16
【问题描述】:

由于某种原因,当我倾斜屏幕时,方块没有移动,我不知道出了什么问题。澄清一下,我将 cfg.accelerometer 设置为 true,但将 cfg.compass 设置为 false。这是源代码-

public void update() 
{

    x += velX;
    y += velY;

    //movement

    //left
    if (Gdx.input.isKeyPressed(Keys.LEFT))
    {
        velX = -speed;
    }

    //right
    if (Gdx.input.isKeyPressed(Keys.RIGHT))
    {
        velX = speed;
    }

    //up
    if (Gdx.input.isKeyPressed(Keys.UP))
    {
        velY = -speed;
    }

    //down
    if (Gdx.input.isKeyPressed(Keys.DOWN))
    {
        velY = speed;
    }

    if (Gdx.input.isPeripheralAvailable(Input.Peripheral.Accelerometer))
    {
        velX = Gdx.input.getAccelerometerX();
        velY = Gdx.input.getAccelerometerY();
    }

    //stop
    if (!Gdx.input.isKeyPressed(Keys.LEFT) && !Gdx.input.isKeyPressed(Keys.RIGHT))
    {
        velX = 0;
    }

    if (!Gdx.input.isKeyPressed(Keys.UP) && !Gdx.input.isKeyPressed(Keys.DOWN))
    {
        velY = 0;
    }

    //collision with edges of screen
    if (x <= 0)
    {
        x = 0;
    }

    if (x >= 1920 - width)
    {
        x = 1920 - width;
    }

    if (y <= 0)
    {
        y = 0;
    }

    if (y >= 1080 - height)
    {
        y = 1080 - height;
    }

    long recoveryElapsed = (System.nanoTime() - recoveryTimer)/1000000;
    if (recoveryElapsed > 2000)
    {
        recovering = false;
        recoveryTimer = 0;
    }

    System.out.println(lives+ " lives, recovering, "+recovering);

}

非常感谢您的帮助,谢谢。我没有找到带有工作示例的教程,所以我真的不知道我所做的是否正确,但我看不出它有什么问题。

【问题讨论】:

    标签: java android libgdx accelerometer gyroscope


    【解决方案1】:

    您正在设置 Accel 值,然后如果未按下按键,则再次将它们设置为 0。这样做:

    //stop
    if (!Gdx.input.isKeyPressed(Keys.LEFT) && !Gdx.input.isKeyPressed(Keys.RIGHT))
    {
        velX = 0;
    }
    
    if (!Gdx.input.isKeyPressed(Keys.UP) && !Gdx.input.isKeyPressed(Keys.DOWN))
    {
        velY = 0;
    }
    
    if (Gdx.input.isPeripheralAvailable(Input.Peripheral.Accelerometer))
    {
        velX = Gdx.input.getAccelerometerX();
        velY = Gdx.input.getAccelerometerY();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多