Цель урока: показать, как нужно изменять положение и угол поворота камеры с помощью ввода с клавиатуры.
Rem Устанавливаем синхронизацию
Sync On
Sync Rate 30
Rem Создаем 5 кубиков и расставляем их в случайном порядке
For x = 1 to 5
Make object cube x,100
Position object x,Rnd(2000),0,Rnd(2000)
Next x
Rem Основной цикл
Do
Rem Сохраняем угол поворота камеры
caY#= Camera angle Y()
Rem Управление камерой с клавиатуры
If Upkey()=1 then Move camera 10
If Leftkey()=1 then Yrotate Camera Wrapvalue(caY#-5)
If Rightkey()=1 then Yrotate Camera Wrapvalue(caY#+5)
Rem Обновляем экран
Sync
Loop
Для начала познакомимся с циклом "For Next".
For x = 1 to 5
Make object cube x,100
Position object x,Rnd(2000),0,Rnd(2000)
Next x
Цикл "For Next" применяется для выполнения одной или нескольких команд заданное число раз. Чтобы указать, сколько раз этот цикл должен выполняться, мы используем переменную "x". В выражении "For Next" для этого всегда нужно ставить слово "To". В нашем случае мы выполняем цикл 5 раз - от 1 до 5. Необходимые команды помещаются в тело цикла. Оператор "Next" с переменной "x", которая подсчитывает число проходов по циклу, обозначает его завершение и увеличивает значение "x" на единицу. Внутри цикла мы создаем объекты в форме куба, присваивая им номер с помощью той же переменной "x". Затем команда "Position Object" помещает на сцене объект в соответствии со значениями 3D-координат. Первое число в команде "Position Object" - это номер помещаемого в сцену объекта. Мы заменили его переменной "x". Три значения после номера объекта обозначают координаты X, Y и Z. Вместо чисел мы поставили команду "Rnd", которая создает случайное число от 0 до значения, находящегося в скобках. Каждый раз при вызове команды "Position Object" новый объект помещается в случайных координатах X и Z с координатой Y, равной 0.
If Upkey()=1 then Move camera 10
Следующая наша команда - "Move Camera". Она похожа на команду "Move Object" за исключением того, что не нужно указывать номер объекта. Число после команды обозначает количество единиц, на которое требуется переместить камеру при каждом проходе основного цикла, если нажата клавиша-стрелка вверх.
If Leftkey()=1 then Yrotate Camera Wrapvalue(caY#-5)
If Rightkey()=1 then Yrotate Camera Wrapvalue(caY#+5)
Команда "YRotate Camera" выполняет ту же функцию, что и "YRotate Object", только она поворачивает по оси Y не объект, а камеру.
Таким образом, вы получили представление, как нужно перемещать камеру и изменять ее положение. Чтобы лучше понять все команды, попробуйте изменить текст исходной программы.
Измените значения в команде "Rnd", чтобы посмотреть, как меняется положение объектов относительно друг друга.
Измените значения в командах "Move Camera" и "Yrotate Camera", чтобы посмотреть, как можно замедлить или ускорить перемещение и поворот камеры.