2016-06-01 4 views
0

나는 내 InputAdapter에서 다음 코드 조각이 :LibGDX with Scene2D에서 버튼을 누를 때 어떻게 계속 오른쪽으로 계속 걸어 갈 수 있습니까?

... 
@Override 
public boolean keyDown (int keycode) { 
    if (keycode == Keybindings.KEY_RIGHT) this.player.right(); 
    return super.keyDown(keycode); 
} 

@Override 
public boolean keyUp (int keycode) { 
    if (keycode == Keybindings.KEY_RIGHT) this.player.stopMovingRight(); 
    return super.keyUp(keycode); 
} 
... 

그리고 내 PlayerActor 클래스는 right()stopMovingRight()에 대한 책임 :

이제
... 
public void right() { 
    this.right = true; 
    this.setX(this.getX() + 1f); 
} 

public void stopMovingRight() { 
    this.right = false; 
} 
... 

, 나는 응용 프로그램을 실행할 때, 내 PlayerActor 이동 단지 키보드의 'D'키를 누를 때마다 1 단위로 표시됩니다. 문제는 내가 대신 PlayerActor 키를 누른 채로 이동하려고합니다. 지금

상황 :

:

  • 하는 키를 누른 상태에서 -> 아무것도

원하는 상황이 발생하지 않습니다 - 올바른

  • 에>는 이동 (단지) 1 개 단위는 키의 이동합시다
    • 계속 누르고 있으면 오른쪽으로 1 단위 이동
    • 열쇠 놓기 -> 오른쪽으로 이동 중지

    나는이 문제에 대한 당신의 생각을 듣고 싶습니다, 건배!

  • 답변

    1

    여기에서 격려 한 문제는 keyDown()이 한 번만 호출되므로 플레이어 ID가 1 단위 만 이동했습니다. 당신이해야 할 일은, 예를 들어 isMovingRight과 같은 변수를 만들고 게임이 업데이트 될 때마다 확인하십시오.

    게임 클래스 :

    public final void render(float delta) { 
    ... 
        player.update(); 
    ... 
    } 
    

    플레이어 클래스 :

    public void update() { 
        if(isMovingRight) { 
         this.setX(this.getX() + 1f); 
        } 
    } 
    
    +0

    당신을 사랑스러운 감사합니다! 이것은 내가 놓친 것입니다. –