Вы можете изменить плитку с травы на бетон или на нечто другое. Функция 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 проверяет, находится ли нажимаемая область в пределах мира и не двигается ли уже персонаж