Показать сообщение отдельно
Старый 09.07.2008, 11:36
big_shtorm вне форума Посмотреть профиль Отправить личное сообщение для big_shtorm Найти все сообщения от big_shtorm
  № 4  
Ответить с цитированием
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.