2014-11-24 1 views
0

저는 LibGDX와 게임 제작을 처음 접했습니다. Keys.UP을 누르지 않아도 스프라이트가 위쪽으로 계속 이동합니다. Keys.UP에 대한 응답으로 만 이동하려고 할 때 왜 이런 일이 일어나는지 확실하지 않습니다.언제나 스프라이트가 움직이지 않아야합니다

나는 동일한 것들을 다루는 각 클래스보다는 게임에 대한 모든 입력을 처리 할 자신의 inputprocessor 클래스를 만들고 있습니다. 내 메인 클래스는 render 메소드 덕분에 모든 프레임에서 player.update (델타 시간)를 호출합니다.

Keys.UP을 누르지 않은 경우에도 왜 계속 올라가고 있습니까? 아래의 조건에서 실패하면 안됩니까?

public void update(float dt){ 

    if (gip.keyDown(Keys.UP)){ 
     this.position.y += this.velocity * dt; 
    } 

GameInputProcessor 클래스 :

public boolean keyDown(int keycode){ 
    switch(keycode){ 

    case Keys.UP: 
     System.out.println("up being pressed"); 
     return true; 
    } 
    return false; 

} 

답변

0

당신은 실제로 키 상태를 테스트하지 않는

플레이어 클래스 (GameInputProcessor는 gip 인스턴스입니다).

gip.keyDown(Keys.UP) 

은 항상이 코드에서 true를 반환합니다.

당신은 당신이 GDX 클래스는 다음 포장

public boolean keyDown(int keycode){ 
    return Gdx.input.isKeyPressed(keyCode) 
} 
+0

내가이 일을했다가되도록 GIP을 수정하려면 코드가

if(Gdx.input.isKeyPressed(Keys.UP)) this.position.y += this.velocity * dt; } 

처럼 보이고 싶어하지만, 이것은 내가해야 의미 내 선수 클래스에 넣고 싶지는 않지만 GameInputProcessor 클래스에서 처리하도록하고 싶습니다. 하지만 원래 제작 된 메인 클래스의 플레이어 인스턴스 사본이 있어야합니다. 나는 이것을 GameInputProcessor 클래스에주는 방법을 너무 확신하지 못한다. –

+0

항상 gdx 호출을 감쌀 수 있습니다. 내 편집이 도움이됩니까? – BevynQ

+0

큰 감사드립니다. 객체 지향 설계의 경우, 그렇게하는 것이 좋은 생각인가? 모든 반원들만 학급 특유의 것들만 다루고 있습니까? –

관련 문제