![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2012
Сообщений: 88
|
Привет всем.
Сижу разрабатываю новую стратегию поиска пути ![]() Сделал так Создаю Врага Потом проверяю вокруг него все квадраты на занятость, если свободный записываю длину от центра квадрата(клетки) до героя. Дальше из 8 клеток я нахожу ту чья длина меньше от центра клетки до героя и говорю ему иди на ту близкую клетку. Вообщем он бежит не к герою а от героя, и скорость увеличивается в арифметической прогрессии... ужс короче. var Alfa:Number; var _xlenvec:Number; var _ylenvec:Number; for(var i:int=0;i<1;i++) { _xlenvec=hero.x-arrHostile[i].x; _ylenvec=hero.y-arrHostile[i].y; Alfa=Math.atan2(_ylenvec,_xlenvec); if(Math.sqrt(Math.pow((hero.x-arrHostile[i].x),2)+Math.pow((hero.y-arrHostile[i].y),2))>10){ var x_sqnext:Number; var y_sqnext:Number; var x_next:Number; var y_next:Number; var Squads:Array=new Array; var Squads_x:Array=new Array; var Squads_y:Array=new Array; var ALfakof:Number=Math.PI/4; var Betta:Number; var min:int; var dEmpty:Boolean; dEmpty=false; Betta=Math.PI/4; for(var j=1;j<=8;j++) {x_next=Math.floor((arrHostile[i].x+10*Math.cos(Betta))/5); y_next=Math.floor((arrHostile[i].y+10*Math.sin(Betta))/5); x_sqnext=x_next*5+2.5; y_sqnext=y_next*5+2.5; for(var s:int=0;s<x_sq.length;s++) { if(x_sqnext!=x_sq[s] && y_sqnext!=y_sq[s]) { Squads[s]=Math.sqrt(Math.pow((hero.x-x_sqnext),2)+Math.pow((hero.y-y_sqnext),2)); Squads_x[s]=x_sqnext; Squads_y[s]=y_sqnext; trace(Squads_x[s]); trace(Squads_y[s]); }else{Squads[s]=9999999;} } min=0; for(var v:int=1;v<=8;v++) {if(Squads[min]>Squads[v]) { min=v; } } x_next=Squads_x[min]; y_next=Squads_y[min]; trace(min); trace(""); Betta+=ALfakof; } arrHostile[i].x+=x_next; arrHostile[i].y+=y_next; x_sq[i]=x_next; y_sq[i]=y_next; } |
![]() |
Часовой пояс GMT +4, время: 09:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|