Input.GetAxis («Mouse X») не работает в некоторых конфигурациях Windows - PullRequest
0 голосов
/ 17 января 2019
public float GetAxis() 
{
    if (inputDevice == InputDevice.MouseKeyboard)
    {
        return Input.GetAxis(this.buttonName);
    }
}

Этот код отлично работает на моем компьютере с Windows 7 x64. Настройки ввода моего проекта порядковые:

Настройки ввода:

enter image description here

Но я посмотрел несколько видео на YouTube, где люди играют в мою игру. И они не могут использовать мышь в этом. Похоже, Input.GetAxis("Mouse X") и Input.GetAxis("Mouse Y") не возвращают правильные значения для них, и они не могут управлять камерой в игре.

Другие входные данные работают нормально для них. Моя версия Unity 5.6.0f3, и я не могу перейти на актуальную версию, потому что код игры слишком сложный.

Как устранить неполадки и исправить это? Я не собирал для других платформ, кроме Windows x86 и x64.

Входной объект построен:

public GenericInput rotateCameraXInput = new GenericInput("Mouse X", "RightAnalogHorizontal");

Чтобы прочитать движение дельта мыши, я запускаю этот метод в LateUpdate ():

protected virtual void CameraInput()
{
    if (tpCamera == null || cc.lockCamera)
    return;
    var Y = rotateCameraYInput.GetAxis();
    var X = rotateCameraXInput.GetAxis();
}

Ответы [ 2 ]

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

Обновление. Это не ошибка. Я просто что-то пропустил в своем проекте. У меня есть скрипт для управления скоростью камеры, управляемой мышью, и переменная PlayerPrefs для ее изменения. И в некоторых случаях эта переменная была установлена ​​на 0. Но для моего случая она уже была установлена ​​на реестр, и на моем ПК все работало нормально. Может быть, мне нужно удалить этот вопрос, потому что он не предоставил достаточно данных.

Я нашел эту ветку на форуме Unity Некоторые люди сталкивались с такой же проблемой на реальном ПК с Windows с разными версиями Unity и разными драйверами мыши. Это старая ошибка совместимости оборудования Unity. Похоже, что это не может быть исправлено иначе, чем обновление Unity или использование другой системы ввода.

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

Я сталкивался с этой проблемой сам, когда использовал сеанс RDP или какой-то удаленный просмотрщик, такой как TeamViewer. Мышь X и Мышь Y считывают вывод непосредственно с устройства. Если устройство не подключено напрямую к машине, на которой запущен плеер, то входные данные не будут правильно извлечены. Я не уверен, так ли это для вас, но я могу думать, что это единственный случай, когда их не поймали.

Может быть, вам следует добавить немного кода, который определяет положение мыши в каждом кадре и выводит разницу, это в любом случае обойдёт входные данные мыши X / Y.

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