Ответ: Перемещения в 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.
|