Я закончил мою версию pc и тестировал свою игру libgdx, а на ПК это выглядело прекрасно, но когда я запустил ее на двух телефонах с Android (Samsung Galaxy S3 mini и Samsung Galaxy S2), я столкнулся с некоторые проблемы, которых я не ожидал. В основном, на моей версии 1v1-плеер каждый игрок имеет свои сенсорные элементы управления влево и вправо. Игрок имеет постоянную скорость (длина вектора скорости постоянна), но всякий раз, когда игрок прикасается к любому из элементов управления, изменяется направление вектора скорости. Мой код выглядит следующим образом:libgdx multitouch issue
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 есть плохая поддержка мультитач или я сделал что-то не так?
Спасибо за ответ, но проблема по-прежнему сохраняется, поскольку для моего В игре я не использовал проекционные матрицы. – user2685747
Лучшее описание проблемы. Если я нажму кнопку влево, а затем удерживая ее, нажмите правую кнопку, а затем кнопку повторного просмотра влево, это не сработает. Это моя ошибка? – user2685747
попробуйте удалить первую строку функции (если (Gdx.input.isTouched())), так как по умолчанию эта строка означает Gdx.input.isTouched (0) ... просто запустите цикл и проверьте isTouched для всех индексов –