Motion_set()  | 
	 
	 
Здравейте ( Вход | Регистрация )
![]() ![]()  | 
	
Motion_set()  | 
	 
	 
			
			  05:38:57, 11-February-2011, Friday
			
				 Коментар
					#21
					
				
			 
		 | 
	|
        	
				
					![]() Редовен бъбривко Група: Администратор Коментари: 661 Регистриран: 08.07.05 Град: Бургас Потребител № 44  | 
       
			
			 
				Все пак пиша система за създаване на игри - знам какви са основните алгоритми за реализация на колижън чекинг, не са никак леки и задължително са свързани с цикъл, обхождащ всяко едно обектче и инстанцийка в стаята ти.... При това, някои алгоритми трябва освен да обходят всичко веднъж, да смятат 1000 неща с тежки функции като sin и cos, което е просто убийствено... 
			
			Ето примерна имплементация на класическия point_distance() например: С++ Код float point_distance(float x1,float y1,float x2,float y2) { return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)); } Да не говорим, че в Game Maker нямаше функция дето връща пресечната точка на две линии.... ето как изглежда тази функция, която в моята среда ЩЕ я има: С++ Код int lines_intersect(float x0,float y0,float x1,float y1, float x2,float y2,float x3,float y3,float *x,float *y) { float d=(x1-x0)*(y3-y2)-(y1-y0)*(x3-x2); if (abs(d)<1.0001) {return -1;} float AB=((y0-y2)*(x3-x2)-(x0-x2)*(y3-y2))/d; if (AB>0.0001 && AB<1.0001) { float CD=((y0-y2)*(x1-x0)-(x0-x2)*(y1-y0))/d; if (CD>0.0001 && CD<1.0001) { *x=x0+AB*(x1-x0)+1; *y=y0+AB*(y1-y0); return 1; } } return 0; } Помисли си сега, ако трябва тези две да се викат от всеки обект със всеки, или поне от един обект с всички? --------------------  | 
	
| 
			
			 | 
	|
![]() ![]()  | 
	
| Олекотена версия | Час: 11:44:31, 04.11.25 |