PDA

Просмотр полной версии : Пересечение клипа с чем либо???


dekcc
12.01.2007, 15:23
Есть проблема...
В сцене около 100 движущихся объектов, как отследить(по проще) пересечение любых двух...
Единственное известное мне решение, в EnterFame для каждого писать
цыкл на 100 HitTest-ов... очень тормозит...
Есть ли какято процедурка которая проверяет пересечение клипа
вообще с каким-либо другим...

Если есть мысли пишите...Заранее благодарен :)

etc
12.01.2007, 15:26
Есть принцип разбиения поля сеткой на ячейки. В каждой ячейке может быть пара-тройка объектов. Уж проверить их столкновение друг с другом недолго и не особо напряжно.
Т.е. каждый объект смотрит, кто есть в его ячейке и проверяет с ними столкновение.

dekcc
12.01.2007, 15:39
Тоже вариант.... Спасибо
Мне интересно... т.е. процедуры
"Есть ли какято процедурка которая проверяет пересечение клипа
вообще с каким-либо другим..." -- НЕТ???

miramax
12.01.2007, 15:42
А какой формы эти объекты ?
(Кажется кто-то скоро пойдёт учить математику)

etc
12.01.2007, 15:43
dekcc, есть, hitTest зовется. Но она не очень…

dekcc
12.01.2007, 15:44
Объекты могут быть любой формы...

KorsaRUS
12.01.2007, 15:50
апроксимируй форму внутренними клипами и проверяй хиттест с ними

dekcc
12.01.2007, 15:53
ээээ.....что простите делать...можно чуток поподробнее

chingachgoog
12.01.2007, 15:57
У тебя видимо 100 объектов и каждый проверяет 99 других итого 9900 проверок. Что очевидно излишне (т.к. получается что многие объекты проверяются дважды). Может попробывать написать внешний код, который бы отсекал повторные проверки (Например объект А проверил объект В и теперь нет нужды объекту В проверять объект А)

KorsaRUS
12.01.2007, 15:59
хиттест проверяет пересечение прячоугольников ограничивающих фигуру, следовательно если тебе нужно проверит пересечениие с треугольником или с чем посложнее - надо в эту фигуру засунуть прямоугольники или точки по краям которые будут проверятся на столкновение ...

KorsaRUS
12.01.2007, 16:02
по поводу отсечения лишнего - разкидай их по массивам - в массив помещай относительно положения в поле видимости - ну тиао ячееек о которых _etc говорил

chingachgoog
12.01.2007, 16:13
хиттест проверяет пересечение прячоугольников ограничивающих фигуру...

Там же два варианта: либо прямоугольник, либо точный контур (любой!) фигуры

KorsaRUS
12.01.2007, 16:25
Точный контур любой фигруы с ТОЧКОЙ! а не с другой фигурой

chingachgoog
12.01.2007, 17:02
Да уж - это "несколько" усложнит дело :)

iNils
12.01.2007, 19:14
Использовать hitTest, класса BitmapData. Он проверяет попиксельно.

relevance4
12.01.2007, 20:02
bitmapData пользуй, оно попиксельно проверяет

Скрипун
12.01.2007, 23:45
а если загнать все обекты в класс и проверять

Class.prototype.onEnterFrame = function () {
for (var i=0;i<hghjj;i++) {
this.hitTest(arr[i]);
}
}

это как то увеличивает скорость или то же самое только по другому записано?