После того как мы создали кубик хорошо бы возле него полетать. Приведенный ниже метод годиться только для свободного полета. Очистите у камеры свойство TargetObject, чтобы мы могли сами управлять направлением взгляда камеры. Подключите модуль GLKeyboard для работы с клавиатурой. Событие OnProgress канденсатора приведите к такому виду для перемещения камеры при нажатии клавиш на клавиатуре:
//Движение вперед по клавишам ‘ц’ и’ w’ if (IsKeyDown('ц') OR IsKeyDown('w')) then GLCamera1.Move(2* deltaTime); //Движение назад по клавишам ‘ы’ и ‘s’ if (IsKeyDown('ы') OR IsKeyDown('s')) then GLCamera1.Move(-2* deltaTime); //Поворот влево по клавишам ‘ф’ и’ a’ if (IsKeyDown('ф') OR IsKeyDown('a')) then GLCamera1.slide(-2* deltaTime); //Поворот вправо по клавишам ‘в’ и ‘d’ if (IsKeyDown('в') OR IsKeyDown('d')) then GLCamera1.slide(2* deltaTime); //Движение вверх по клавишам ‘u’ и ‘г’ if (IsKeyDown('u')) OR IsKeyDown(‘г’) then GLCamera1.Lift(0.01); //Движение вниз по клавишам ‘n’ и ‘т’ if (IsKeyDown('n')) OR IsKeyDown(‘т’) then GLCamera1.Lift(-0.01)
Или еще можно так :
if IsKeyDown(FUP) then Camera.Move(d*2); if IsKeyDown(FDOWN) then Camera.Move(-d*2); if IsKeyDown(FLEFT) then Camera.Slide(-d*2); if IsKeyDown(FRIGHT) then Camera.Slide(d*2);
где d:double.
Теперь запускаем проект и видим, что мы можем перемещать камеру по сцене. Есть интересный приём, можно писать не (IsKeyDown('ф') OR IsKeyDown('a')), а IsKeyDown(ord('a')). Такой вариант лучше т.к. код будет работать на любой раскладке , однако я предпочитаю писать по старинке код клавиши.
Переместите из вкладки GLScene Utils на форму GLNavigator . У него в свойстве MovingObject выберите GLCamera1. Добавьте на форму GLUserInterface из вкладки GLScene Utils, в свойстве GLNavigator выберете GLNavigator1. Свойство MouseSpeed – это скорость реакции мыши, сделаем её равным 10. Теперь нужно скрыть курсор мышки. Для этого в событие OnCreate формы добавьте такую строчку: GLUserInterface1.MouseLookActive:=true; А в событии OnProgress Cadencer’а добавить строчки: GLUserInterface1.Mouselook; GLUserInterface1.MouseUpdate;
|