PDA

Просмотр полной версии : Как изменить настройки столкновения hitTestObject?


Dip52
20.01.2013, 22:07
Здравствуйте. :)

Есть объект MovieClip в нём два шара, которые отдалены друг от друга. Есть ещё один объект MovieClip, он гораздо меньше, чем предыдущий объект MovieClip и с легкостью влезет в область между двумя шарами.
Стоит слушатель событий Event (enter_frame), где условие "hitTestObject". Оно проверяет столкновение между двумя этими объектами.
Как сделать так, чтобы когда объект MovieClip, который меньше, находился между двумя шарами объекта MovieClip не считался "касанием".

0 = шар объекта MovieClip.
1 = объект, который меньше, чем предыдущий объект MovieClip.

0 1 0 — Касания нету.

1 - 0 — Касание есть.

samana
20.01.2013, 23:51
Если я правильно понимаю, то вам надо проверять столкновения маленького мувиклипа и обоих шаров в отдельности, а не маленького мувиклипа и мувиклипа с шарами.

caseyryan
21.01.2013, 09:54
О каких настройках речь? hitTestObject - Это вообще один из самых примитивных алгоритмов проверки. Он проверяет по баундинг боксу. Если нужна точная проверка столкновений, прийдется разбираться с SAT.

expl
21.01.2013, 13:19
Как-бы столкновение шаров определяется по формуле:

public static function isRoundHitted(x0:Number, y0:Number, r0:Number, x1:Number, y1:Number, r1:Number):Boolean {
var dx:Number = x1 - x0;
var dy:Number = y1 - y0;
return dx * dx + dy * dy < (r0 + r1) * (r0 + r1);
}

Теорема Пифагора, 6-й класс, если не ошибаюсь :)

Да, и 3 шара ни кто не пытается рассматривать, обычно столкновения попарно обрабатывают.