Motion_set() |
Здравейте ( Вход | Регистрация )
Motion_set() |
23:09:16, 14-September-2010, Tuesday
Коментар
#1
|
|
Новодошъл Група: Потребител Коментари: 17 Регистриран: 25.07.08 Потребител № 1126 |
как да задам за кой обект да се изпълни функцията motion_set() във срипт който е извън обекта ?
|
|
|
05:38:57, 11-February-2011, Friday
Коментар
#2
|
|
Редовен бъбривко Група: Администратор Коментари: 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; } Помисли си сега, ако трябва тези две да се викат от всеки обект със всеки, или поне от един обект с всички? -------------------- |
|
|
Олекотена версия | Час: 21:41:08, 18.05.24 |