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

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



1 function moveCharacter(){ 2 if (world.char.moving){ 3 world.char.tempx =world.char.x+world.char.xmov; 4 world.char.tempz =world.char.z+world.char.zmov; 5 world.char.tempy =world.char.y+world.char.ymov; 6 var sx =world.char.startx; 7 var sz =world.char.startz; 8 var ex =world.char.endx; 9 var ez =world.char.endz; 10 var tempx =world.char.tempx; 11 var tempz =world.char.tempz; 12 if ((ex-sx)/Math.abs(ex-sx) .!=(ex-tempx)/Math.abs(ex-tempx) .||(ez-sz)/Math.abs(ez-sz) .!=(ez-tempz)/Math.abs(ez-tempz)){ 13 world.char.moving =false; 14 world.char.xmov =0; 15 world.char.zmov =0; 16 world.char.tempx =ex; 17 world.char.tempz =ez; 18 world.char.clip.gotoAndStop .("stand"+world.char.frame); 19 } 20 } 21 } Первой задачей этой функции является проверка, двигается ли персонаж. Если да (то есть moving равна true), то мы перемещаем его. Строки 3-5 устанавливают временную позицию персонажа на основе его текущей позиции и его скорости в каждом направлении. Затем мы создаем ссылки на его начальную и конечную позиции с тем, чтобы уже довольно длинное выражение if в строке 12 выглядело немного более рациональным. Условие, которое мы ищем в строке 12 довольно просто, хотя оно и выглядит сложным. Мы пытаемся определить, достиг ли персонаж своей цели назначения. Если да, то знак (+ или -) разницы между A) его текущего положения и цели назначения и B) между начальной позицией и целью назначения будут различны (как в x, так и в z- направлениях). Давайте возьмем пример с персонажем, который двигается только в направлении x. Начальная позиция равна 10, а конечная позиция равна 100. Знак разности между конечной и начальной позицией +(положительный). Вы найдете его делением разности на абсолютное значение этой разности: (endx-startx)/Math.abs(endx-startx) Мы сравниваем это значение со значением знака разности между конечной позицией и текущей позицией. Так, если текущая позиция равна 30, то (100-30)/Math
Hosted by uCoz