Расчет расстояния при работе акселерометра и гироскопа в Unity
Я тестирую акселерометр и гироскоп в Unity. В моей игре 3d шары из центра экрана летят к цели за экраном (цель — это пустой GameObject с настроенными координатами). Движение шаров прописано в Update с помощью обычного изменения координат.
На сцене есть Image с фоном, который я поворачиваю в зависимости от работы акселерометра/гироскопа:
float curSpeed = Time.deltaTime * _speed;
if (Mathf.Abs(Input.acceleration.x) > noTiltWindow)
_localRotation.z += Input.acceleration.x * curSpeed;
else
_localRotation.z += Input.acceleration.x * (curSpeed / 2);
bg.transform.rotation = _localRotation;
Проблем с поворотом нет. Идея в том, чтобы менять направление шариков в зависимости от поворота смартфона.
Сейчас я просто беру угол поворота фона и вычисляю координату y, по которой потом пускаю шарики.
Vector3 temp = new Vector3();
float angle = bgTransform.localEulerAngles.z;
angle = (angle > 180) ? angle - 360 : angle;
temp.y = angle;
На первый взгляд работает, но совсем не так, как я бы хотел. Нужно, чтобы при повороте смартфона шарики были привязаны к углу поворота акселерометра или гироскопа.
По моей задумке, зная пройденное расстояние при повороте смартфона, можно будет направить шарики в нужную сторону.
Есть ли способ узнать расстояние, пройденное при повороте? И насколько вообще эта идея с измерением расстояния правильна?