Quaternion.Lerp не вращает объект с точными градусами
Я хочу повернуть мой объект на 90 градусов с помощью Quaternion.Lerp, когда пользователь нажимает стрелку вверх. Но после каждого поворота я вижу, что он не поворачивает мой объект точно на 90 градусов. примерно на 88 градусов он вращается. В чем проблема? Как я могу решить эту проблему?
if (Input.GetKeyDown(KeyCode.UpArrow))
{
to.eulerAngles = transform.eulerAngles + new Vector3(90, 0, 0);
from.eulerAngles = transform.eulerAngles;
direction = "up";
}
if("up".Equals(direction))
transform.rotation = Quaternion.Lerp(from, to, Time.deltaTime*10);
if (transform.eulerAngles==to.eulerAngles)
{
direction = "";
}
1 ответ
Решение
Это так странно.
Только что добавлен
transform.eulerAngles = transform.eulerAngles;
в
if (transform.eulerAngles==to.eulerAngles)
{
direction = "";
}
и решил. Я думаю, что система Unitys Transform не так чувствительна, я тестирую ее в журнале, даже ее ротация была приблизительно 88 в журнале, в инспекторе это была 90. Поэтому я добавляю этот код, и это делается.