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

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

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

Регистрация: Jul 2008
Сообщений: 4
Alex_beginner ваше замечание учел, поправил код, попробывал hitTest (в общем в исходнике 3 разных способа обнаружения сталкновения) результат не очень красивый зато вроде мячь не проскакивает насквозь, но вот проблема с залипанием на биту осталась ((( причем она выевляеться когда скорость биты равна 0, пробывал сравить условие чтоб никогда не была равна нулю...при этом она липнет и дергаясь отлетает...я думаю что всетаки я чтото напартачил с функцией реакции на столкновение function reaction(). об этой функции рассказываеться в книге "Секреты разработки игр в Macromedia Flash MX" Джоб Макар вот так она выглядит у него для двух шаров типа бильярд:
Код:
function reaction(b1, b2, x1, x2, y1, y2, time) {
	var mass1 = b1.mass;
	var mass2 = b2.mass;
	var xVel1 = b1.xmov;
	var xVel2 = b2.xmov;
	var yVel1 = b1.ymov;
	var yVel2 = b2.ymov;
	var run = (x1-x2);
	var rise = (y1-y2);
	var theta = Math.atan2(rise, run);
	var costheta = Math.cos(theta);
	var sintheta = Math.sin(theta);
	var xVel1prime = xVel1*costheta+yVel1*sintheta;
	var xVel2prime = xVel2*costheta+yVel2*sintheta;
	var yVel1prime = yVel1*costheta-xVel1*sintheta;
	var yVel2prime = yVel2*costheta-xVel2*sintheta;
	var P = (mass1*xVel1prime+mass2*xVel2prime);
	var V = (xVel1prime-xVel2prime);
	var v2f = (P+mass1*V)/(mass1+mass2);
	var v1f = v2f-xVel1prime+xVel2prime;
	var xVel1prime = v1f;
	var xVel2prime = v2f;
	var xVel1 = xVel1prime*costheta-yVel1prime*sintheta;
	var xVel2 = xVel2prime*costheta-yVel2prime*sintheta;
	var yVel1 = yVel1prime*costheta+xVel1prime*sintheta;
	var yVel2 = yVel2prime*costheta+xVel2prime*sintheta;
	var b1.tempx = b1.xpos+b1.xmov*time;
	var b1.tempy = b1.ypos+b1.ymov*time;
	var b2.tempx = b2.xpos+b2.xmov*time;
	var b2.tempy = b2.ypos+b2.ymov*time;
	var b1.xmov = xVel1;
	var b2.xmov = xVel2;
	var b1.ymov = yVel1;
	var b2.ymov = yVel2;
}
что я делаю не так? Спасибо


Последний раз редактировалось iNils; 09.07.2008 в 11:39.
Создать новую тему Ответ Часовой пояс GMT +4, время: 04:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


 


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


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