2014-10-13 5 views
0

저는 LibGdx를 사용하여 자바 게임을하고 있는데 도움이 필요합니다.화살표 키 우선 순위 (자바 RPG 게임)

설명 : 화살표 키에는 하나의 문제점이 있습니다. 먼저 코드가 어떻게 작동하는지 설명하겠습니다. 따라서 업데이트 방법에서 키를 눌렀는지 확인합니다. 그리고 그들이 있다면 나는 그들을 다룬다. 문제는 내 코드가 다른 코드를 확인한다는 것입니다. 첫 번째 화살표 키는 다른 모든 키보다 우선 순위가 높기 때문에 키를 누르면 먼저 호출됩니다. 예 :

public static void updateControls(){ 

    if(Gdx.input.isKeyPressed(Input.Keys.UP){ 
     //Make player move up... 
    } 
    if(Gdx.input.isKeyPressed(Input.Keys.DOWN){ 
     //Make player move down... 
    } 
    if(Gdx.input.isKeyPressed(Input.Keys.LEFT){ 
     //Make player move left... 
    } 
    if(Gdx.input.isKeyPressed(Input.Keys.RIGHT){ 
     //Make player move right... 
    } 

} 

그런데 내 게임은 타일베이스입니다. 플레이어가 1 타일 이동을 마쳤 으면 화살표 키 입력을 다시 확인하여 어느 방향으로 가야하는지 확인합니다.

어떤 문제가 발생합니까? : 플레이어가 왼쪽, 오른쪽 또는 아래쪽으로 이동하고 해당 단추 중 하나를 누른 채 위로 누르기를 결정할 때마다. 위로 이동이 우선하며 플레이어가 처음으로 내려 갔을 때 플레이어가 위로 움직이기 시작합니다.

직접 해보지 않고 이해하기가 어렵 기 때문에이 점을 내 능력에 설명하려고했습니다. 너 자신에 결함을 시험하기 위해 나의 게임에 대한 더 많은 설명이나 링크가 필요하다면, 자유롭게 의견을 말하고 그 것을 요구할 수있다. 감사!

+2

좋아요, 그럼 실제로 어떻게하고 싶습니까? 다른 키를 누를 때 플레이어가 같은 방향으로 계속하기를 원합니 까? – Alex

+0

예. 하지만 이미 고쳤지만 고마워! 내가 이것을 올린 직후 나는 해결책을 찾아 냈다. – vedi0boy

+0

해결책 : 마지막 방향을 기록한 int를 추가했습니다. 그런 다음 키를 누를 때마다 마지막 방향의 키가 계속 눌려 있는지 확인합니다. 그럴 경우, 해당 키의 코드가 다시 실행됩니다. 그것이 아니라면, 그것은 단지 중재없이 계속 될 것입니다. – vedi0boy

답변

0

내가 한 모든 것은 기본적으로 눌려진 마지막 키를 저장하는 int를 작성한 것입니다. 화살표 키 중 하나를 누를 때마다 다음에, (이 최대 누를 때입니다)이 같은 switch 문을 통과 : 그것은 확인

switch(lastKey){ 
case DIRECTION_UP: 
    break; 
case DIRECTION_DOWN: 
    if(Gdx.input.isKeyPressed(Input.Keys.DOWN) 
     handleDownPressed(); 
    break; 
case DIRECTION_LEFT: 
    if(Gdx.input.isKeyPressed(Input.Keys.LEFT) 
     handleLeftPressed(); 
    break; 
case DIRECTION_RIGHT: 
    if(Gdx.input.isKeyPressed(Input.Keys.RIGHT) 
     handleRightPressed(); 
    break; 
} 

누를 마지막 키이었고, 무엇을 볼 경우 그것은 여전히 ​​눌려 있고, 눌렀을 때 처리되기 전에 눌려진 것을 처리 할 것입니다. 마지막 키가 위로 올랐 으면 스위치에서 빠져 나와 입력 처리를 계속합니다.