2013-09-07 1 views
0

내 libgdx 게임을 테스트하고 내 libgdx 게임을 완료했으며 PC에서 안심할 수 있었지만 안드로이드 (Samsung Galaxy S3 mini 및 Samsung Galaxy S2)가 장착 된 두 대의 휴대폰에서 실행했을 때 내가 예상했던 몇 가지 문제들. 기본적으로 내 1v1 플레이어 버전에서 모든 플레이어는 왼쪽 및 오른쪽으로 자체 터치 컨트롤을 사용합니다. 플레이어는 일정한 속도 (속도 벡터의 길이는 일정합니다)를 가지지 만 플레이어가 컨트롤 중 하나를 터치 할 때마다 속도 벡터의 방향이 변경됩니다. 내 코드는 다음과 같습니다 : 그것은 단지 실제 안드로이드 장치에서 잘 작동하지 않습니다libGdx 멀티 터치 문제

private void handleInput(float delta) { 
    if (Gdx.input.isTouched()) { 
     for (int i = 0; i < 20; i++) { 

      if (Gdx.input.isTouched(i)) { 

       touchedX = Gdx.input.getX(i); 
       touchedY = Gdx.input.getY(i); 
       // PLAYER 1 
       if (touchedX <= dB) { 
        // RED RIGHT 
        if (touchedY <= h/2 + h/playerSpacing + dB 
          && touchedY >= h/2 + h/playerSpacing) { 
         turnLeft(players[0], delta); 
        } 
        // RED LEFT 
        else if (touchedY <= h/2 - h/playerSpacing 
          && touchedY >= h/2 - h/playerSpacing - dB) { 
         turnRight(players[0], delta); 
        } 

       } 
       //PLAYER 2 
       else if (touchedX >= w - dB) { 
        // BLUE RIGHT 
        if (touchedY <= h/2 + h/playerSpacing + dB 
          && touchedY >= h/2 + h/playerSpacing) { 
         turnRight(players[1], delta); 
        } 
        // BLUE LEFT 
        else if (touchedY <= h/2 - h/playerSpacing 
          && touchedY >= h/2 - h/playerSpacing - dB) { 
         turnLeft(players[1], delta); 
        } 
       } 

      } 
     } 
    } 

의 접촉은 유창하게 인식되지 않고 플레이어의 총 컨트롤이 손상된다. 왜 그런 일이 일어나는 지 아십니까? LibGdx에 멀티 터치 지원이 잘못되었거나 잘못되었습니다.

답변

1

문제는 터치 포인트를 투영하지 않았기 때문입니다.

당신이

touchpoint = new Vector3(); 

camera.unproject(touchpoint.set(Gdx.input.getX(i),Gdx.input.getY(i),0); 
touchedX = touchpoint.x; 
touchedY = touchpoint.y; 

으로 터치 포인트를 unproject해야한다 또한 내가 (대신 기능 Gdx.input.getX (I), Gdx.input.getY에서 X & Y 값을 얻는 inputprocessor 사용을 권장합니다 i) Inputprocesor가 멀티 터치 이벤트를 훨씬 더 잘 제어 할 수있게 해주 며, 터치 포인트를 얻기위한 루프를 작성하지 않아도됩니다.이 함수는 포인터도 터치합니다.

+0

답변 주셔서 감사합니다. 그러나 문제는 여전히 남아 있습니다. 게임 투영 행렬을 사용하지 않았습니다. – user2685747

+0

문제에 대해 더 잘 설명합니다. 왼쪽 단추를 누른 채로 누른 상태에서 오른쪽 단추를 누른 다음 왼쪽 단추를 다시 표시하면 작동하지 않습니다. 그건 내 실수 야? – user2685747

+0

함수의 첫 번째 줄을 제거하려고하면 (Gdx.input.isTouched()) 기본적으로이 줄은 Gdx.input.isTouched (0)을 의미합니다 ... 루프를 실행하고 모든 인덱스에 대해 isTouched를 확인하십시오 –