Расчет наклона смартфона при использовании гироскопа

Общие вопросы о Unity3D

Расчет наклона смартфона при использовании гироскопа

Сообщение stan001 27 июн 2023, 11:18

Уже несколько дней пытаюсь настроить правильное поведение гироскопа в Unity. Я хочу сделать так, чтобы при наклоне смартфона объект наклонялся по оси z. Нашел в интернете несколько вариантов кода и мне удалось правильно рассчитать наклон и заблокировать изменение поворота при наклоне смартфона вперед или назад. Но остается одна проблема, при которой, если взять смартфон в руки и повернуть вокруг своей оси, угол поворота также рассчитывается. Насколько я понимаю, это связано с тем, что кроме наклона гироскоп рассчитывает еще и изменение поворота смартфона в пространстве. Вот мой код:

Синтаксис:
Используется csharp
public class TestInputController : MonoBehavior
{
     public Transformbg;
     private Quaternion referenceRotation;

     void Start()
     {
         input.gyro.enabled = true;
         referenceRotation = GetDeviceRotation();
     }

     private Quaternion GetDeviceRotation()
     {
         return new Quaternion(0.5f, 0.5f, -0.5f, 0.5f) * Input.gyro.attitude * new Quaternion(0, 0, 1, 0);
     }

     private float GetRollAngle(Quaternion refRotation, Quaternion currentRotation)
     {
         Quaternion eliminationOfXY = Quaternion.Inverse(Quaternion.FromToRotation(refRotation *
             Vector3.forward, currentRotation * Vector3.forward));

         Quaternion rotationZ = eliminationOfXY * currentRotation;
         return rotationZ.eulerAngles.z;
     }

     void Update()
     {
         bg.transform.rotation = Quaternion.Slerp(bg.transform.rotation,
                        Quaternion.Euler(0f, 0f, GetRollAngle(referenceRotation, GetDeviceRotation())),
                        8f * Time.deltaTime);
     }
}


Как можно убрать зависимость от поворота смартфона в пространстве и оставить только расчет угла наклона для поворота объекта по оси z?
stan001
UNец
 
Сообщения: 1
Зарегистрирован: 27 июн 2023, 11:15

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 12


cron