English Version            Русская версия

 [ Разделы сервера ]  [ Карта сервера ]  [ Новости сервера ] [ Обратная связь ]



Если условие удовлетворяется, то блок условного оператора выполняется и подготавливает персонажа к движению. Что входит в эту подготовку? Для персонажа, способного к движению, мы определяем угол, в котором он движется, кадр угла поворота (1 из 8) под которым отображается персонаж, и скорость в каждом направлении движения персонажа. В строках 8 и 9 мы храним начальное положение персонажа. (Это начальное положение используется позднее для определения, достиг ли персонаж цели.) В следующих двух строках мы храним конечное положение персонажа. Затем, в строке 12, мы создаем переменную с именем angleSpan, которая хранит значение градусов, для каждого из восьми возможных углов, в которых может предстать персонаж. Мы потом будем использовать это значение (наряду с углом, образованным курсором мыши и персонажем, найденным в строке 14) для определения, какой из восьми кадров отображать в строке 19. При использовании метода Math.atan2() для определения угла мы будем иногда получать отрицательные углы. Отрицательные углы вполне допустимы, но я предпочитаю работать с положительными углами. Поскольку углы цикличны (то есть 350 то же что -10), мы можем просто добавить 360 к любому отрицательному углу, чтобы получить положительное представление угла. Этот переключатель реализован в строке 16. Как упомянуто выше, строка 19 вычисляет, какой номер кадра персонажа отображать в клипе персонажа. Мы используем его в строке 20 и сохраняем значение в строке 21. Затем мы устанавливаем свойство moving в true в объекте char. Далее мы сохраняем значение синуса и косинуса угла, поскольку они используются более одного раза (строки 23 и 24). Затем мы используем тригонометрию для вычисления скорости движения персонажа (строки 25 и 26), тем же способом, который мы применяли не раз в этой книге. И, наконец, мы устанавливаем значения feelerx и feelerz. Эти значения мы будем прибавлять к временным координатам, когда делаем проверку на столкновения. Далее у нас идет функция moveCharacter(). Эта функция вызывается в каждом кадре
Hosted by uCoz