Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 03.06.2012, 02:11
Mkey вне форума Посмотреть профиль Отправить личное сообщение для Mkey Найти все сообщения от Mkey
  № 1  
Ответить с цитированием
Mkey
 
Аватар для Mkey

Регистрация: Apr 2012
Сообщений: 88
По умолчанию Враг Бежит не туда.

Привет всем.
Сижу разрабатываю новую стратегию поиска пути
Сделал так
Создаю Врага
Потом проверяю вокруг него все квадраты на занятость, если свободный записываю длину от центра квадрата(клетки) до героя.
Дальше из 8 клеток я нахожу ту чья длина меньше от центра клетки до героя и говорю ему иди на ту близкую клетку.
Вообщем он бежит не к герою а от героя, и скорость увеличивается в арифметической прогрессии... ужс короче.

Код AS3:
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;
				}
Прикрепил флэшочку=))
Вложения
Тип файла: zip LifeArena.zip (3.5 Кб, 30 просмотров)

Создать новую тему   Часовой пояс GMT +4, время: 09:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.