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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию Прямолинейное жвижение в *.asc

Здравствуйте, помогите пожалуйста с прямолинейным движением.
Есть такой код который выполняется тогда когда пользователь отпустил кнопку выстрела.
Код AS1/AS2:
application.users_so.lock();
 
		var PersonObj = new Object();
 
		PersonObj= application.users_so.getProperty(this.id);
 
		var dX=PersonObj.cX; // PersonObj.cX = Координата по "Х" где размещён стреляющий объект
		var dY=PersonObj.cY; // PersonObj.cY = Координата по "Y" где размещён стреляющий объект
		var dR=PersonObj.fR; // PersonObj.fR = Угол поворота 
		var buffer=9000;
 
		while (buffer>=0)
		{
			dX += Math.round(Math.cos(Math.PI/180*dR)); 
			dY += Math.round(Math.sin(Math.PI/180*dR));
 
			distance = Math.sqrt(Math.pow(PersonObj.fX-dX,2)+Math.pow(PersonObj.fY-dY,2));
 
 
			// dangerZ['XxY'] массив в котором прописанны все не прострелюющие элементы
 
			if (dangerZ[Math.round(dX)+'x'+Math.round(dY)])
			{						
				PersonObj.fX=dX; // PersonObj.fX = Координата по "Х" куда ведёться выстрел
				PersonObj.fY=dY; // PersonObj.fY = Координата по "Y" куда ведёться выстрел
				buffer=-2009;
			}
 
			if (buffer!=-2009)
				if (distance>buffer)
				{
					buffer=-2009;
				} else buffer=distance;
		}
 
		application.users_so.setProperty(PersonObj.id, PersonObj);
 
	application.users_so.unlock();
Суть такова, что я имею две точки, начального и конечного движения ракеты, при таком алгоритме бывают такие явления как, пролёт не пролетаемых зон + попадает в зону но взрыв перемещается либо немного вправо, либо в лево, либо вообще по вертикально то вверх, то влево, то вниз, то вправо в зависимости на какой угол поверёнута башня. Одним словом я точно понял что мой алгоритм не верно работает. Подскажите что не так, либо если есть готовый пример просчёта каждой составляющей целочисленной точки (погрешность при round/floor не имеет значения) на отрезку от А(х,у) до Б(х,у).
__________________
return this...

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

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

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


 


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


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