Клавиша больше не считается «вниз» после нажатия другой клавиши - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь заставить обычную камеру от третьего лица вращаться вокруг моего персонажа. Я хочу, чтобы клавиша X вращалась вправо, а клавиша Z вращалась влево. У меня это работает. Моя проблема в том, что когда я нажимаю и удерживаю одну из клавиш (скажем, X), а затем нажимаю любую другую клавишу, Input.GetKey(KeyCode.X) перестает возвращать true. Таким образом, в следующем простом примере будет напечатано сообщение до тех пор, пока не будет нажата другая клавиша, и не будет до тех пор, пока я не нажму клавишу еще раз.

void LateUpdate()
{
    if(Input.GetKey(KeyCode.X))
    {
        print("X is down"); 
    }
}

Это лишает меня возможности поворачивать камеру при перемещении моего персонажа, поскольку, как только я пытаюсь изменить направление с помощью клавиши со стрелкой, она переводит мое утверждение if в ложь. Есть ли другой метод, который я должен использовать?

Редактировать - это не проблема Unity или моего кода. Я использовал Teamviewer, который должен обрабатывать ввод по-разному

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Это может быть аппаратная проблема. Разные уровни качества клавиатуры имеют разное поведение. Например, у меня когда-то была клавиатура, на которой, если бы я нажимал более трех клавиш одновременно, она не регистрировалась, когда они были отпущены, и мой персонаж застревал, бегал или вращался или что-то еще, пока я не нажал и не отпустил клавишу снова. Дорогие «игровые» клавиатуры должны обрабатывать несколько одновременных нажатий клавиш лучше, чем другие. YMMV.

0 голосов
/ 18 января 2019

Это закончилось из-за удаленного доступа. Я использовал Teamviewer для удаленного доступа к ноутбуку с Unity. Как только я использовал ноутбук напрямую, он работал как положено.

0 голосов
/ 17 января 2019

Это работает для меня.Может быть, вы используете еще, если при проверке, нажата ли кнопка?

    if (Input.GetKey(KeyCode.X))
    {
        print("X is down");
    }
    if (Input.GetKey(KeyCode.Y))
    {
        print("Y is down");
    }

Это также работает для меня, если у меня есть только 1, если.Даже если я нажму любую другую клавишу, напечатано «X не работает».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...