Я пытаюсь повернуть объект, основываясь на значениях датчика (отклонение шага при повороте).У меня есть следующий фрагмент кода скрипта для поворота объекта.
if ((0<=ax&& ax<1.03f) && (0 <= az && az <1.03f))
{
if (x > calibrateX)
x = x - calibrateX;
else
x = calibrateX - x;
//x = Mathf.Abs(x);
Debug.Log("0-90 Rotation on X @ " + x);
Quaternion xangle = Quaternion.Euler(new Vector3(x, transform.eulerAngles.y, transform.eulerAngles.z));
transform.rotation = Quaternion.Slerp(transform.rotation, xangle, Time.deltaTime * 2f);
}
//Pitch 90-180;
else if ((0<= ax && ax<1.03f) && (-1.03f<=az && az< 0))
{
x = x+180;
Debug.Log("90-180 Rotation on X @ " + x);
Quaternion xangle = Quaternion.Euler(new Vector3(x, transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z));
transform.rotation = Quaternion.Slerp(transform.rotation,xangle, Time.deltaTime*2f);
}
Скрипт работает для углов от 0 до 90.Вращение происходит плавно и, как и ожидалось.Однако, когда угол составляет от 90 до 180, вращение объекта не является плавным.В редакторе похоже, что объект прыгает между двумя точками.Например, если угол равен 110 (xangle), объект прыгает между углом 110 и 70. Это происходит для любого угла между 90 - 180.
Мне нужна помощь, чтобы понять, что я делаю неправильно.Спасибо за ваше время.