Показать сообщение отдельно
Старый 24.06.2011, 04:23   #424
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Сообщение от is.SarCasm Посмотреть сообщение
а ты сам пробувал что получилось?
Нет, потому что задача не описана, какой вопрос, такой и ответ. Я посчитал что ты используешь градусы, вместо радиан, а на самом деле, ты использовал компонент кватерниона (как написали выше), который не несет полезной информации о повороте отдельно.

Комментарии:

1. Что такое нода?
2. Использование компоненты кватерниона бессмысленно.
3. Использовать даже компоненту transform.eulerAngles.x было бы не правильно, так как ее значение может прыгать (прыгает в зависимости от общего поворота модели), это не тоже самое что и в блице или 3ds max. Возможно угол стоит вручную считать для данной задачи (неизвестно какой).
4. Использовать в функциях Mathf.Sin/Mathf.Cos/и т.д. нужно радианы, а transform.eulerAngles возвращает градусы (Quaternion возвращает неизвестно что), т.е. transform.eulerAngles.x * Mathf.Deg2Rad.
5. В качестве mycamera в данном случае можно использовать переменную var mycamera:Transform, тогда отпадет надобность получать трансформ камеры каждый раз, т.к. это немного медленная операция.

Если исправить на использование "правильного" угла, то скрипт мог бы выглядеть так:
var mycamera:Transform;
var 
Distance=10;
function 
Update () {
var 
mycamera.eulerAngles.Mathf.Deg2Rad;
mycamera.position.transform.position.Mathf.Sin(x)* Distance;
mycamera.position.transform.position.Mathf.Cos(x)* -Distance;

Но вероятность, что камера иногда будет скакать остается.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием