Проблема с поворотом объекта при использовании гироскопа в Unity

Я использую этот код, чтобы управлять поворотом объекта с помощью гироскопа:

    Vector3 previousEulerAngles = transform.eulerAngles;
    Vector3 gyroInput = -Input.gyro.rotationRateUnbiased;

    Vector3 targetEulerAngles = previousEulerAngles + gyroInput * Time.deltaTime * Mathf.Rad2Deg;
    targetEulerAngles.x = 0.0f;
    targetEulerAngles.y = 0.0f;

    transform.eulerAngles = targetEulerAngles;

Всё работает почти так, как мне нужно, но есть 2 проблемы. При резком повороте смартфона и его повороте больше, чем на 360 градусов, объект смещается со своей начальной позиции. Появляется крен в одну из сторон и объект остаётся слегка наклонён.

Если повернуть смартфон перед запуском приложения, то поворот объекта будет отсчитываться от начального положения, а не от положения поворота гироскопа. И здесь также появляется разница в повороте смартфона и объекта.


Ответы (0 шт):