Страница 1 из 1

Вычисляем угол поворота камеры

СообщениеДобавлено: 29 окт 2018, 19:16
Programmator21
Уважаемое комЮнити, подскажите как вычислить в углах Еллера на какой угол поворачивается камера. Есть две переменные _m1 и _m2, в них соответственно записываются значение координат поворота в точке А(записываем в _m1) и после вращения объекта Камера, записываются координаты поворота в точке B(записываем в _m2). И теперь мне нужно вывести _result = (_m1-_m2) по оси Y - это важно!
То есть их разницу. И по идее я получу угол, желательно в Градусах или Радианах, на который повернется объект Камера по оси Y. Помогите, как это реализовать?

Re: Вычисляем угол поворота камеры

СообщениеДобавлено: 29 окт 2018, 19:28
1max1
значение координат поворота

Изображение

Угол, на который повернулась камера можно рассчитать так:
Синтаксис:
Используется csharp
Quaternion r1 = camera.transform.rotation;
// тут поворачиваем камеру
Quaternion r2 = camera.transform.rotation;
// находим угол
float angle = Quaternion.Angle(r1, r2);

Re: Вычисляем угол поворота камеры

СообщениеДобавлено: 29 окт 2018, 19:56
Programmator21
1max1 писал(а):
значение координат поворота

Изображение

Угол, на который повернулась камера можно рассчитать так:
Синтаксис:
Используется csharp
Quaternion r1 = camera.transform.rotation;
// тут поворачиваем камеру
Quaternion r2 = camera.transform.rotation;
// находим угол
float angle = Quaternion.Angle(r1, r2);



Отлично! Работает, но откуда то берется погрешность в 1-2 градуса, в случае если объекты _m1 и _m2 находятся на разной высоте. То есть когда камера меняет не только горизонтальный угол, но и вертикальный. А выводить мне нужно горизонтальный. Подскажите, как сделать:) Quaternion r1, r2 = camera.transform.rotation.y ?

Re: Вычисляем угол поворота камеры

СообщениеДобавлено: 29 окт 2018, 20:05
KanycTa
Отлично! Работает, но откуда то берется погрешность в 1-2 градуса, в случае если объекты _m1 и _m2 находятся на разной высоте. То есть когда камера меняет не только горизонтальный угол, но и вертикальный. А выводить мне нужно горизонтальный. Подскажите, как сделать:) Quaternion r1, r2 = camera.transform.rotation.y ?


Переводить в углы Эйлера

Quaternion.ToEuler();

Re: Вычисляем угол поворота камеры

СообщениеДобавлено: 29 окт 2018, 20:34
1max1
Попробуй так:
Синтаксис:
Используется csharp
Vector3 f1 = camera.transform.forward;
// тут поворачиваем камеру
Vector3 f2 = camera.transform.forward;
// находим угол
f1.y = 0;
f2.y = 0;
float angle = Vector3.Angle(f1, f2);

Re: Вычисляем угол поворота камеры

СообщениеДобавлено: 29 окт 2018, 22:22
Programmator21
1max1 писал(а):Попробуй так:
Синтаксис:
Используется csharp
Vector3 f1 = camera.transform.forward;
// тут поворачиваем камеру
Vector3 f2 = camera.transform.forward;
// находим угол
f1.y = 0;
f2.y = 0;
float angle = Vector3.Angle(f1, f2);


О да, это работает! Наконец то, спасибо!)))) Если не затруднит, поясните, пожалуйста, зачем обнуляются f1.y и f2.y ? А так вроде все логично, благодарю вас! :ymhug:

Re: Вычисляем угол поворота камеры

СообщениеДобавлено: 29 окт 2018, 22:33
1max1
Если не затруднит, поясните, пожалуйста, зачем обнуляются f1.y и f2.y

Ну так ты сам просил:
А выводить мне нужно горизонтальный.

То есть тебе нужен угол в плоскости XZ, без Y.

Re: Вычисляем угол поворота камеры

СообщениеДобавлено: 31 окт 2018, 07:34
Programmator21
1max1 писал(а):
Если не затруднит, поясните, пожалуйста, зачем обнуляются f1.y и f2.y

Ну так ты сам просил:
А выводить мне нужно горизонтальный.

То есть тебе нужен угол в плоскости XZ, без Y.


А как посчитать вертикальные углы? С горизонтальным понятно, там одна плоскость. А вот в вертикальных две: XY и ZY. Вообще мне нужно вывести "Горизонтальный: .... Вертикальный:....."

Re: Вычисляем угол поворота камеры

СообщениеДобавлено: 31 окт 2018, 09:34
1max1
А как посчитать вертикальные углы?

Ну возьми одну плоскость, к примеру XY, значит Z тебе нужно обнулить.