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

Сообщение от YellowAfterlife Посмотреть сообщение
Упрощенный вариант:
float hpi = 1,5707963; // половина PI
// pan - вращение вокруг оси Z (горизонталь)
// tilt - вращение вокруг оси Y (вертикаль)
void move(float dx, float dy, float dz)
{
// перемещение вперед\назад:
x += cos(pan) * cos(tilt) * dx;
y += sin(pan) * cos(tilt) * dx;
z += sin(tilt) * dx;
// перемещение вправо\влево:
x += cos(pan + hpi) * dy;
y += sin(pan + hpi) * dy;
/* Поскольку roll не учитываем то Z тут не меняется */
// перемещение вверх\вниз:
x += cos(pan) * cos(tilt + hpi) * dz;
y += sin(pan) * cos(tilt + hpi) * dz;
z += sin(tilt + hpi) * dz;
}
Хорошего дня.
Вперед/назад это dx? вправо/влево dy? вверх/вниз dz?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием