deadsputnik
@deadsputnik
около-Gamedev

Как ограничить поворот объекта при использовании transform.Rotate()?

Добрый день. Пытаюсь ограничить поворот объекта по оси x.
Поворот осуществляется следующим образом:
float moveVertical = Input.GetAxis("Vertical");
transform.Rotate(moveVertical * rotationRate * Time.deltaTime, 0, 0);

Я пытался сделать это следующим обрзом:
if( transform.rotation.x > -89f && tranform.rotation.x < 89f) 
{
   transform.Rotate(moveVertical * rotationRate * Time.deltaTime, 0, 0); 
}

Но тогда Unity ломается, и PlayMode не включается вовсе...
Приходится перезапускать программу через диспетчер задач.
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
DanceM
@DanceM Куратор тега Unity Game Engine
Кто хочет -ищет способ, кто не хочет -ищет причину
transform.rotation это кватернион, у него нет углов в градусах, вообще.

Вы наверное хотели использовать transform.eulerAngles или transform.localEulerAngles.

Но я бы с углами в градусах не связывался, а использовал бы Vector3.Dot() для вычисления, насколько текущий вектор поворота соответсвует изначальному направлению.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DanielMcRon
@DanielMcRon
C# && Unity
Mathf.Clamp
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы