Радианы и градусы Unity - Форум Игроделов
Чт, 09 Май 2024, 02:15 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » ОБЩИЕ ВОПРОСЫ » Радианы и градусы Unity
Радианы и градусы Unity
HeadLinerДата: Сб, 30 Апр 2016, 15:05 | Сообщение # 1
Нет аватара
 
Сообщений: 55
Награды: 0
Репутация: 0
Статус: Offline
Доброго времени суток. Каким образом можно определить угол поворота объекта в градусах Unity вместе со знаком? Пробовал с помощью простого "angle = transform.rotation.y *Rad2Deg", где значение передаётся в радианах и переводится в градусы, но не смог добиться желаемого результата. В координатах юнити объект может повернуться на +/- 180 градусов, то есть значение поворота меняет знак при переходе через 0 и +/- 180. Знак в радианах меняется только при переходе через 0 и 360, что не позволяет дать значения в координатах юнити. Например, при вращении объекта от 0 до 360 градусов инспектор юнити даст следующие углы 0...90...180..-90...0, а в радианах 0...0,5...1...0,5...0, то есть от нуля до 180 и опять до нуля всегда с одним знаком. Как можно определить угол со знаком? Заранее благодарен.

Сообщение отредактировал HeadLiner - Сб, 30 Апр 2016, 15:06
 
СообщениеДоброго времени суток. Каким образом можно определить угол поворота объекта в градусах Unity вместе со знаком? Пробовал с помощью простого "angle = transform.rotation.y *Rad2Deg", где значение передаётся в радианах и переводится в градусы, но не смог добиться желаемого результата. В координатах юнити объект может повернуться на +/- 180 градусов, то есть значение поворота меняет знак при переходе через 0 и +/- 180. Знак в радианах меняется только при переходе через 0 и 360, что не позволяет дать значения в координатах юнити. Например, при вращении объекта от 0 до 360 градусов инспектор юнити даст следующие углы 0...90...180..-90...0, а в радианах 0...0,5...1...0,5...0, то есть от нуля до 180 и опять до нуля всегда с одним знаком. Как можно определить угол со знаком? Заранее благодарен.

Автор - HeadLiner
Дата добавления - 30 Апр 2016 в 15:05
VolkOrievithДата: Сб, 07 Май 2016, 07:39 | Сообщение # 2
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
В unity для определения поворота обычно используются кватернионы. Чтобы найти угол вращения в градусах нужно его вывести из синуса и косинуса, т.е. если вам нужно вращение по оси y, берем transform.forward.z (косинус) и transform.forward.x (синус) берем арккосинус и по знаку синуса находим, в какой четверти находится угол. Можно сделать так, думаю:
Код

angle = Mathf.Acos (transform.forward.z) * Mathf.Abs(Mathf.Asin(transform.forward.x)) / Mathf.Asin(transform.forward.x) * Mathf.Rad2Deg;

Только нужно понимать, что при sin = 0, значение угла будет "NaN", так как делить на ноль нельзя. Поэтому нужно поставить условие "если син = 0, то угол = 0"


Сообщение отредактировал VolkOrievith - Сб, 07 Май 2016, 07:45
 
СообщениеВ unity для определения поворота обычно используются кватернионы. Чтобы найти угол вращения в градусах нужно его вывести из синуса и косинуса, т.е. если вам нужно вращение по оси y, берем transform.forward.z (косинус) и transform.forward.x (синус) берем арккосинус и по знаку синуса находим, в какой четверти находится угол. Можно сделать так, думаю:
Код

angle = Mathf.Acos (transform.forward.z) * Mathf.Abs(Mathf.Asin(transform.forward.x)) / Mathf.Asin(transform.forward.x) * Mathf.Rad2Deg;

Только нужно понимать, что при sin = 0, значение угла будет "NaN", так как делить на ноль нельзя. Поэтому нужно поставить условие "если син = 0, то угол = 0"

Автор - VolkOrievith
Дата добавления - 07 Май 2016 в 07:39
Форум Игроделов » UNITY3D » ОБЩИЕ ВОПРОСЫ » Радианы и градусы Unity
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024