2016-08-21 4 views
1
for (byte i = 0; i < 20; i++) {maxDistance = 10 * Gdx.graphics.getDeltaTime(); 
     if (Gdx.input.isTouched(i) && Gdx.input.getY()<= 400) { 
      player1TouchPosition.set(Gdx.input.getX(i), Gdx.input.getY(i), 0); 
      camera.unproject(player1TouchPosition); 
     } 
     player1Tmp.set(player1TouchPosition.x, player1TouchPosition.y).sub(player1Rectangle.x, player1Rectangle.y); 
     if (player1Tmp.len() <= maxDistance) { 
      player1Rectangle.x = player1TouchPosition.x; 
      player1Rectangle.y = player1TouchPosition.y; 
     } else { 
      player1Tmp.nor().scl(maxDistance); 
      player1Rectangle.x += player1Tmp.x; 
      player1Rectangle.y += player1Tmp.y; 
     } 
     if (Gdx.input.isTouched(i) && Gdx.input.getY() >= 401) { 
      player2TouchPosition.set(Gdx.input.getX(i), Gdx.input.getY(i), 0); 
      camera.unproject(player2TouchPosition); 
     } 
     player2Tmp.set(player2TouchPosition.x, player2TouchPosition.y).sub(player2Rectangle.x, player2Rectangle.y); 
     if (player2Tmp.len() <= maxDistance) { 
      player2Rectangle.x = player2TouchPosition.x; 
      player2Rectangle.y = player2TouchPosition.y; 
     } else { 
      player2Tmp.nor().scl(maxDistance); 
      player2Rectangle.x += player2Tmp.x; 
      player2Rectangle.y += player2Tmp.y; 
     } 
    } 

Здравствуйте, я использую этот код для перехода в позицию касания. Но мне нужно много касаться. Это не работает. Когда я добавляю player2, он не работает. Я не понимал, как много касаться. Как я могу это исправить?Java LibGDX Multi Touch Issue

ответ

1

Почему вы не используете InputProcessor? Одним из примеров одного метода из интерфейса

@Override 
    public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
     if(pointer =< 2){ 
      touches.get(pointer).touchX = screenX; 
      touches.get(pointer).touchY = screenY; 
      touches.get(pointer).touched = true; 
     } 
     return true; 
    } 

В приведенном выше примере вы можете использовать максимум 2 штрихи. На самом деле 1 указатель - 1 касание.

Documentation

screenX и screenY являются положение прикосновения. Имейте в виду, что вам нужно масштабировать эту позицию по сравнению с вашей орфографической камерой. Указатель - это указатель на событие.

Если вы создаете InputProcessor вы можете запустить его с

Gdx.input.setInputProcessor(/*Your class*/); 

EDIT:

Пример из комментариев:

for (Button button : /*ArrayList*/{ 
      if (positionX >= button1.getX() && positionX <= button1.getX() + button1.getWidth() && 
        positionY >= button1.getY() && positionY <= button1.getY() + button1.getHeight()){ 
     //Update the position from the specific button 
} 

Вы можете использовать этот код внутри метода из интерфейс touchDragged().

+0

У вас есть 2 прямоугольника, 1 прямоугольник вверх и 1 вниз. Итак, сначала вы проверяете, находится ли позиция вверх или вниз. Я предпочитаю использовать 'touchDragged' вместо' touchDown'. 'touchDragged' также является методом из интерфейса' InputProcessor'. –

+0

После этого вы инициализируете переменную для прямоугольника 1 и прямоугольника 2. В методе визуализации вы должны обновить новую позицию. –

+0

Надеюсь, я помог вам! :) –