2014-02-17 4 views
2

화면을 기울이면 블록이 움직이지 않고 무엇이 잘못되었는지 알 수 없습니다. 명확히하기 위해 cfg.accelerometer를 true로 설정했지만 cfg.compass는 false로 설정했습니다. 다음은 소스 코드입니다.Libgdx 가속도계가 작동하지 않습니까?

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); 

} 

도움을 주시면 감사하겠습니다. 표시된 예제로 찾은 자습서가 없으므로 내가하는 일이 맞는지는 알 수 없지만 그 일이 잘못된 것은 아닙니다.

답변

1

가속 값을 설정하고 키를 누르지 않으면 다시 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(); 
} 
관련 문제