Показать сообщение отдельно
Старый 24.06.2011, 09:29   #14
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Перемещения в 3d пространстве.

Сообщение от 616}[aKeP Посмотреть сообщение
А вот как верх вниз влево вправо сделать?
Я без понятия!((
Упрощенный вариант:
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 = полет вверх\вниз (относительно текущего поворота камеры)

Хорошего дня.
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...

Последний раз редактировалось YellowAfterlife, 24.06.2011 в 14:59.
(Offline)
 
Ответить с цитированием