Вращение камеры вокруг объекта (РЕШЕНО)

Программирование на Юнити.

Вращение камеры вокруг объекта (РЕШЕНО)

Сообщение janua 18 фев 2010, 18:35

У меня такая задача: нужно сделать возможность облета камерой вокруг объекта с помощью кнопок интерфейса.
Я вот делаю четырьмя кнопками: две на горизонталь и две на вертикаль:

if (GUI.RepeatButton (Rect (245, 525, 50, 50), ">"))
{
var angles1 = transform.eulerAngles;
x = angles1.y-1;
}
if (GUI.RepeatButton (Rect (195, 525, 50, 50), "<"))
{
var angles2 = transform.eulerAngles;
x = angles2.y+1;
}
//dve knopki dlya vrasheniya po vertikali
if (GUI.RepeatButton (Rect (480, 225, 50, 50), "^"))
{
var angles3 = transform.rotation.eulerAngles;
y = angles3.x-1;
}
if (GUI.RepeatButton (Rect (480, 275, 50, 50), "_"))
{
var angles4 = transform.rotation.eulerAngles;
y = angles4.x+1;


В итоге по горизонтали камера крутится вокруг цели, а по вертикали только в пределах 180 градусов. 90 от меня и 90 на меня. К тому же если эти 90 довести до конца, то камера застряет т в другую сторону по вертикали уже не идет.

Кто знает чего это может быть и как с ним бороться?
Или, может, какую альтернативу кто подскажет?

Премного и заранее благодаренjanua
UNец

Сообщения: 1
Зарегистрирован: Сегодня, 19:09
Личное сообщение
Последний раз редактировалось janua 12 май 2010, 17:19, всего редактировалось 1 раз.
janua
UNец
 
Сообщения: 25
Зарегистрирован: 18 фев 2010, 18:09

Re: Вращение камеры вокруг объекта

Сообщение Neodrop 18 фев 2010, 18:38

Раздел "Уроки" для готовых уроков, а не для просьб объяснить элементарные вещи. Перенесено.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вращение камеры вокруг объекта

Сообщение warr11r 18 фев 2010, 21:31

Почему вы в одном случае используете transform.eulerAngles, а в другом - transform.rotation.eulerAngles?
Мудрость - это когда начинаешь понимать, что все время занимаешься какой-то х...ней.
Изображение
Аватара пользователя
warr11r
UNITрон
 
Сообщения: 310
Зарегистрирован: 06 июн 2009, 03:21
Откуда: Украина, Ровно
  • ICQ

Re: Вращение камеры вокруг объекта

Сообщение Paul Siberdt 18 фев 2010, 21:38

пользуйте функцию transform.Rotate (почитайте справку в документации)

Или, если хотите пошагового контроля:
1 - по инпуту определяете смещение, например, на три градуса tilt (наклон вперед)
2 - создаете вектор Vector3.forward и поворачиваете его по оси X на три градуса (эвлеровым углом).
3 - находите кватернион между эталонным Vector3.forward и тем, что повернули (Quaternion.FromToRotation).
4 - добавляете повороту объекта полученный кватернион.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Вращение камеры вокруг объекта

Сообщение janua 20 фев 2010, 20:20

Тот ротейшн всплыл в процессе попыток что-то изменить. На самом деле оно ничего (по крайней мере на мой взгляд) не поменяло.

За совет спасибо, буду разбираться с transform.Rotate. Надеюсь, что в процессе чтения все, что напмсано в четырех пунктах, станет понятно ))
janua
UNец
 
Сообщения: 25
Зарегистрирован: 18 фев 2010, 18:09


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 13