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. Поэтому я добавляю этот код, и это делается.

Другие вопросы по тегам