Назад

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", чтобы посмотреть, как можно замедлить или ускорить перемещение и поворот камеры.

 

Hosted by uCoz