Назад

      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 Создаем сферу
      Make object sphere 10,50

      Rem Основной цикл
      Do
         Rem  Сохраняем вертикальный угол объекта в переменной aY#
         aY# = Object angle Y(10)

         Rem  Управление камерой с клавиатуры
         If Upkey()=1 then Move object 10,10
         If Leftkey()=1 then Yrotate object 10,Wrapvalue(aY#-5)
         If Rightkey()=1 then Yrotate object 10,Wrapvalue(aY#+5)

         Rem Устанавливаем положение игрока и сохраняем его в переменных X# и Z#
         X# = Object position x(10)
         Z# = Object position z(10)

         Rem Получаем новое положение камеры и сохраняем его в переменных cZ# и cX#
         cZ# = Newzvalue(Z#,aY#-180,100)
         cX# = Newxvalue(X#,aY#-180,100)

         Rem Устанавливаем положение камеры
         Position Camera cX#,100,cZ#

         Rem Направляем камеру на объект "Игрок"
         Point camera X#,50,Z#

         Rem Обновляем экран
         Sync

      Loop

В этом уроке мы познакомимся с тем, как применить в игре вид от третьего лица. Вид от третьего лица можно определить, как вид из камеры, которая находится позади игрока и чуть выше него. Большую часть кода этого урока, мы уже описывали в предыдущих уроках. Давайте сосредоточимся на новых строках кода и новых командах.

         X# = Object position x(10)
         Z# = Object position z(10)

Команды "Object Position X" и "Object Position Z" похожи на команду "Object Angle" за исключением того, что они возвращают не угол поворота объекта, а положение объекта в относительных координатах. В скобках ставится номер объекта, координаты которого нужно получить. Значения координат сохраняем в переменных X# и Z#.

         cZ# = Newzvalue(Z#,aY#-180,100)
         cX# = Newxvalue(X#,aY#-180,100)

Команды "NewZValue" и "NewXValue" помогают вам избежать сложных математических функций, таких как синус и косинус. Они вычисляют новое положение объекта на основании старого. Мы используем эти команды, чтобы вычислить точку, находящуюся в 100 единицах пространственных координат позади объекта "Игрок". Первый параметр - это относительная координата, в которой расположен игрок в данный момент. Помните, что мы сохранили положение этого объекта в переменных X# и Z#. Второй параметр - угол оси новых координат. Мы взяли значение вертикального угла объекта, сохранили значение в переменной Y# и вычли из него 180 градусов. Этот угол направлен точно за объект. Третий параметр обозначает точку, удаленную от объекта на указанное количество единиц пространственных координат. Мы задали значение 100. Другими словами, мы сделали следующее: нашли точку, находящуюся позади объекта "Игрок" и удаленную от него на 100 единиц, и сохранили ее координаты в переменных cZ# и cX#, обозначающих положение нашей камеры.

         Position camera cX#,100,cZ#

Команда "Position Camera" работает так же, как и команда "Position Object", за исключением того, что не нужно указывать номер объекта - только значения координат. Для координат X и Z мы используем вновь созданные значения, а для координаты Y - значение 100. Поскольку вертикальная координата Y объекта-игрока равна 0, а его радиус 50, значение 100 координаты помещает камеру над объектом.

         Point camera X#,50,Z#

Наша камера направлена поверх объекта-игрока. С помощью команды "Point Camera" мы направим камеру на объект. Параметры этой команды - это координаты X, Y и Z той точки, на которую нужно направить камеру. Мы используем переменные X# и Z#, хранящие значения положения объекта по осям X и Z. В качестве значения по оси Y будем использовать 50. Теперь камера направлена в центр нашего объекта-игрока.
 

Попробуйте изменить количество повторений цикла, чтобы создать больше кубиков. Не забудьте поменять номер объекта-игрока, чтобы это число было больше, чем число кубиков, иначе программа выведет сообщение об ошибке "Объект уже существует".

В командах "NewXValue" и "NewYValue" попробуйте поменять значение 180 на другое, меньше 360, чтобы посмотреть, как оно влияет на положение камеры. Измените также последний параметр в этих командах, чтобы переместить камеру ближе или дальше к объекту.

Попробуйте изменить значение 50 в команде "Point Camera", чтобы изменить высоту камеры.

 

Hosted by uCoz