Сообщение от 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 x = mycamera.eulerAngles.x * Mathf.Deg2Rad;
mycamera.position.y = transform.position.y + Mathf.Sin(x)* Distance;
mycamera.position.z = transform.position.z + Mathf.Cos(x)* -Distance;
}
Но вероятность, что камера иногда будет скакать остается.