Главная » 2011 » Февраль » 6 » Движение камеры в GLScene
17:16
Движение камеры в GLScene
После того как мы создали кубик хорошо бы возле него полетать. Приведенный ниже метод годиться только для свободного полета. Очистите у камеры свойство 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;

Категория: Статьи | Просмотров: 1340 | Добавил: De:Light | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вы вошли как: Гость
12:22
Вы вошли как: Гость
Календарь
«  Февраль 2011  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28
Категории
Новости [11]
Статьи [23]
GLscene,Web Design,IT,etc...
Счетчик

Онлайн всего: 1
Гостей: 1
Пользователей: 0