Unity3D Input.GetAxis для мыши не соответствует - PullRequest
0 голосов
/ 03 мая 2019

Я работаю над поворотом камеры на основе mouseInput и хочу, чтобы он имел постоянную чувствительность на всех частотах кадров. В соответствии с документацией Unity, Input.GetAxis должен иметь частоту кадров, независимую от движения мыши.

Я обнаружил, что когда я использую приведенный ниже код и изменяю частоту кадров с 200+ на 30, Input.GetAxis возвращает очень разные выходные данные. Для 200+ кадров в секунду значение GetAxis составляет около 2-5, а для 30 кадров в секунду оно возвращает около 10-15 для тех же движений мыши. Это вызывает очень резкую разницу в чувствительности в игре. Я что-то пропустил? Спасибо

    public Rigidbody _playerRigidBody;
private Vector2 _lookInput;
private void Start()
{
    //Application.targetFrameRate = 30;
}
private void Update()
{
    _lookInput.x = Input.GetAxis("Mouse X"); 

}

void FixedUpdate()
{
    var sensitivity = 300f;
    var newPlayerRotation = _playerRigidBody.rotation * Quaternion.Euler(_lookInput.x * sensitivity * Vector3.up * Time.deltaTime);
    _playerRigidBody.MoveRotation(newPlayerRotation);

}

}

Я протестировал все в этой маленькой функции, и единственное, что вызывает проблему - это Input.GetAxis. Это противоречиво. Любые идеи или решения или обходные пути?

1 Ответ

1 голос
/ 03 мая 2019

«независимый от частоты кадров» означает, что значение зависит от движения мыши, это не означает, что значение является постоянным.

Для частоты кадров = 200, значение = 2-5 означает движение мыши 2-5 очков за 1/200 секунды.

Таким образом, чтобы получить расстояние перемещения за 1 секунду использования:

_lookInput.x = Input.GetAxis("Mouse X") / Time.deltaTime;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...