![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2005
Сообщений: 53
|
как определить столкновение с совершенно случайнм объектом?
|
|
|||||
|
Регистрация: Aug 2005
Сообщений: 53
|
Цитата:
, но лучше все-таки со случайным: ведь если будет около 500 объектов, которые генеряться - запаришься к ним Хит Тест писать - это около 1000 лишних строк кода(ну побольше) |
|
|||||
|
привет!
вопрос я понял так: есть некий объект и надо отловить его столкновение с 500-ми генерироваными. вот, как идея: может стоит написать прототип "генератам" ( ) с методом хиттест на этот некий объект? |
|
|||||
|
отсекай те объекты (а их будет наверняка большинство), с которыми столкновение в принципе невозможно. с остальными в цикле проверяй хиттест или считай геометрически - смотря какие объекты
|
|
|||||
|
Регистрация: Aug 2005
Сообщений: 53
|
Цитата:
|
|
|||||
|
Типа, много объектов на экране? Тады нафик хиттест? Я лично понимаю так: много объектов на экране => объекты маленькие... Так пиши просто "если расстояние меньше радиуса первого+радиус второго (раз маленькие - значит, почти шарики
) - БАХ! (ну ты понял)" где проверять? Создай отдельный мувик(рут подойдет ) и пиши for(i=1;i<NUM;i++){ for(j=i+1;j<=NUM; j++){ clip1 = eval("meteoritiliasteroid" add i); clip2 = eval("meteoritiliasteroid" add j); //Проверка радиусов клипов clip1 и clip2... } } эта ерунда должна работать более-менее быстро, так как проверяет сначала не произошло ли столкновения первого с остальными, потом второго с остальными кроме первого (это уже проверили) и т.д. |
|
|||||
|
Регистрация: Aug 2005
Сообщений: 53
|
Цитата:
"meteoritiliasteroid" - это название или, если название то чего?? Напиши лучше полный код плиз с пояснениями |
|
|||||
|
ну допустим у тебя есть астероиды... Имена у астероидов - "asteroid1","asteroid2","asteroid3","asteroid4","asteroid5" и т.д. и т.п. Тогда дабы добраться до N-го астероида тебе нужно написать, скажем,
clipAsteroid = eval("asteroid" add N). Можно еще там _root["asteroid" add N], вообщем, много способов... Но этот почему-то мне нравится больше всего. Слово красивое А насчет проверки там - ну пиши Asteroid1 = eval("asteroid" add i); Asteroid2 = eval("asteroid" add j); distance = Math.sqrt(Math.pow(Asteroid1._x-Asteroid2._x,2)+Math.pow(Asteroid1._y-Asteroid2._y,2)); if(distance<=Asteroid1.radius+Asteroid2.radius){ //делаешь то что надо делать при их столкновении } ну и предварительно задавай каждому значение radius... Можешь через prototype... Но все это для того чтобы просчитать их столкновения друг с другом (тебе ж это надо было?) |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|