Понедельник, 23 Декабря 2024, 13:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Довернуть камеру на определенный угол
serega721Дата: Среда, 15 Апреля 2015, 21:46 | Сообщение # 1
был не раз
Сейчас нет на сайте
Добрый вечер!
Задача состоит в следующем:
"На сцене имеется камера и пушка со своими лучами, когда луч пушки выходит за пределы видимости камеры (по вертикали), требуется довернуть камеру вверх чтобы вернуть видимость. Луч у камеры всегда позиционирован в 20% от верхнего края (screehHeight*0.2)"
Казалось бы задача тривиальна, требуется найти угол между лучами и довернуть камеру на альфу. Но после проведенных расчетов камера не заворачивается до нужной позиции, постоянно либо выше, либо ниже требуемого. Буду признателен любой оказанной помощи, код и картинку для ясности происходящего прикладываю ниже.
P.S Дело не в длине луча, а именно в не верном повороте.
Код

//cameraRayVector - взят Getpoint с луча у камеры
//gunRayVector - взят Getpoint с луча у пушки
//vAngle - находим угол между векторами, отнимаем от каждого вектора позицию камеры, для того чтобы угол считался не с нулевой позиции координат  
float vAngle = Vector3.Angle((cameraRayVector - _mainCamera.transform.position), (gunRayVector - _mainCamera.transform.position));

                           Vector3 cross = Vector3.Cross((cameraRayVector - _mainCamera.transform.position), (gunRayVector - _mainCamera.transform.position));
                           if (cross.y < 0) vAngle = -vAngle;
                           Quaternion quat = Quaternion.AngleAxis(vAngle, Vector3.right);
                           _mainCamera.transform.rotation = Quaternion.Euler((quat * _mainCamera.transform.rotation.eulerAngles));

  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг