Zorexo
@Zorexo
Пробую, экспериментирую и т. д.

Как исправить ограничение поворота объекта через Mathf.Clamp?

Есть скрипт, который поворачивает объект за курсором:
void Update()
    {
        Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
        float rotateZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
        vector.transform.rotation = Quaternion.Euler(0f, 0f, Mathf.Clamp(rotateZ, 0f, 180f));
    }


Вот эта "чёрная палочка":
63b47153303b3486190657.png

Я ограничил поворот объекта с помощью Mathf.Clamp и со своей основной задачей он справляется, но когда указатель опускается ниже объекта, то значение rotation всегда меняется на 0, а не останавливается на 180:
63b47465d7784539856847.gif

Пробовал так:
void Update()
    {
        Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
        if (difference.y > 0)
        {
            float rotateZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
            vector.transform.rotation = Quaternion.Euler(0f, 0f, Mathf.Clamp(rotateZ, 0f, 180f));
        }
    }

но если опустить курсор ниже объекта слишком быстро, то скрипт может не всё просчитать и rotation остановится на тех значениях, которые успели просчитаться.
Думаю его можно допилить, но по моему мнению это лютый костыль, поэтому использовать её я не хочу
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы