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

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



Вы можете изменить плитку с травы на бетон или на нечто другое. Функция changeManyGroundTiles() делает то же самое, за исключением того, что изменение применяется ко многим плиткам. Вы задаете координаты x и z и затем задаете ширину в каждом направлении. Теперь, когда мы рассмотрели обнаружение столкновения, мы можем перейти к «следующему логическому шагу», о котором я упомянул выше – перемещении самого персонажа. Когда вы нажимаете на кнопку мыши, вызывается корректно поименованная функция worldClicked(). Эта функция проецирует координаты вашего курсора мыши x и y на плоскость x, -z в изометрическом мире. Затем она берет эти значения и сравнивает их с границами мира. Если курсор мыши во время клика был в пределах границ мира и персонаж уже не двигался, то происходит много вещей. Давайте рассмотрим что именно. 1 function worldClicked(xm,ym){ 2 var temp =iso.mapToIsoWorld(xm,ym); 3 var xm =temp [0 ]; 4 var zm =temp [1 ]; 5 if (!world.char.moving &&xm>=0 &&xm<=world.width .&&zm>=world.length &&zm<=0){ 6 var x =world.char.x; 7 var z =world.char.z; 8 world.char.startx =x; 9 world.char.startz =z; 10 world.char.endx =xm; 11 world.char.endz =zm; 12 var angleSpan =360/8; 13 var angle =Math.atan2(zm-z,xm-x); 14 var realAngle =angle*180/Math.PI; 15 realAngle +=angleSpan/2; 16 if (realAngle<0){ 17 realAngle +=360; 18 } 19 var frame =Math.ceil(realAngle/angleSpan); 20 world.char.clip.gotoAndStop("walk"+frame); 21 world.char.frame =frame; 22 world.char.moving =true; 23 var cosAngle =Math.cos(angle); 24 var sinAngle =Math.sin(angle); 25 world.char.xmov =world.char.speed*cosAngle; 26 world.char.zmov =world.char.speed*sinAngle; 27 world.char.feelerx =world.char.feeler*cosAngle; 28 world.char.feelerz =world.char.feeler*sinAngle; 29 } 30 } Условный оператор в строке 5 проверяет, находится ли нажимаемая область в пределах мира и не двигается ли уже персонаж
Hosted by uCoz